我正在用Qt Creator创建用户界面。我创建了一个扩展QMainWindow的StartWindow类。创建之后,我添加了新的方法和属性。 QT Creator自动为头文件生成这种代码:
#include <QMainWindow>
namespace Ui {
class StartWindow;
}
class StartWindow : public QMainWindow
{
Q_OBJECT
public:
explicit StartWindow(QWidget *parent = 0);
~StartWindow();
public:
int i;
private:
Ui::StartWindow *ui;
};
现在,当我尝试从cpp文件中给我值2时:
ui->i = 2;
我收到此错误:
但是我可以通过范围解析运算符访问
i
StartWindow::i = 0;
要么
this->i = 0;
我都无法通过访问
i
this->ui->i = 0;
有人可以向我解释吗?
最佳答案
StartWindow
类具有i
和ui
作为两个单独的数据成员。 i
不是ui
的成员,而是StartWindow
对象本身的成员。因此,遏制是这样的:
StartWindow object
| |
i ui
而不是这样:
StartWindow object
|
ui
|
i
这就是为什么您无法通过
i
访问ui
,而必须直接访问它。