子访问父变量/定义变量一次,在整个应用程序中使用它

时间:2014-10-14 17:15:05

标签: c++ qt

请考虑以下代码:

class.h

public:
    QString dataDirectory;

class.cpp

dataDirectory = QApplication::applicationDirPath();
dataDirectory.append("/../data");

child.h

class Child : public QDialog

child.cpp

QString dataFile = parent()->dataDirectory; // Fails
dataFile.append("myfile.txt");

当然我试着用qobject_cast投射它,就像这样:

 ParentClass *myParent = qobject_cast<class *>(parent());
 QString dataFile = myParent->dataDirectory; // Fails (I even get a segfault);

没有成功。我也试图改变孩子的构造函数,但是我得到了几十个未定义的错误消息。虽然我使用了前向声明并避免包含头文件。

我想要的只是在一个地方定义目录路径并在我的整个应用程序中访问它。在另一种语言中,我知道更好,真的很简单,但在C ++中,我无法让它工作:/

问题是一个非常基本的问题,我有点不好意思找不到解决方案,但我的父母和孩子都是QWidgets,我找不到任何方法来访问孩子中的parent变量。

2 个答案:

答案 0 :(得分:1)

使用private数据成员以及publicstatic getter函数,返回从数据成员发出的const QString &

答案 1 :(得分:0)

&#34;我&#34;解决方案(感谢dom0)

QString parent::dir()
{
    return QGuiApplication::applicationDirPath().append("/../data/");
}