请考虑以下代码:
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变量。
答案 0 :(得分:1)
使用private
数据成员以及public
和static
getter函数,返回从数据成员发出的const QString &
。
答案 1 :(得分:0)
&#34;我&#34;解决方案(感谢dom0)
QString parent::dir()
{
return QGuiApplication::applicationDirPath().append("/../data/");
}