【发布时间】:2015-06-20 11:20:08
【问题描述】:
我正在尝试编写一个应用程序,其中我将拥有一个通用对话框窗口和特定的对话框窗口,这些窗口将从通用窗口继承一些基本功能。我不确定这是不是最好的方法,但我就是这样做的(CGenericProject 类是从 Qt Creator 中的 Dialog 模板创建的):
CGenericProject.h:
#include <QDialog>
namespace Ui {
class CGenericProject;
}
class CGenericProject : public QDialog
{
Q_OBJECT
public:
explicit CGenericProject(QWidget *parent = 0);
~CGenericProject();
protected:
Ui::CGenericProject *ui;
};
CGenericProject.cpp:
#include "cgenericproject.h"
#include "ui_cgenericproject.h"
CGenericProject::CGenericProject(QWidget *parent) :
QDialog(parent),
ui(new Ui::CGenericProject)
{
ui->setupUi(this);
}
CGenericProject::~CGenericProject()
{
delete ui;
}
CEisProject.h:
#include "cgenericproject.h"
class CEisProject : public CGenericProject
{
public:
CEisProject();
~CEisProject();
};
CEisProject.cpp:
#include "ceisproject.h"
CEisProject::CEisProject()
{
ui-> NO ACCESS
}
CEisProject::~CEisProject()
{
}
正如您在CEisProject.cpp 文件中看到的,我无法访问从CGenericProject 继承的ui 字段,即使它是protected。我的意思是,我看到ui 本身,但我没有看到它的方法和成员。我将在那里定义的任何其他变量都可以访问。怎么了?我将不胜感激以这种方式提供的所有帮助。
【问题讨论】:
-
您是否尝试过编译代码而不尝试访问 ui?它会给你任何错误吗?
-
代码编译得很好,我也再次运行了qmake。
-
由于您在 Ui::CGenericProject 的构造函数中创建了一个新的 Ui::CGenericProject,我希望您的程序“永远”继续创建新实例。
-
但是我只运行了一次构造函数。
标签: c++ qt user-interface inheritance objective-c++