QT UI指针中缺少属性和方法
Missing attributes and methods in QT ui pointer
我正在使用QT Creator构建用户接口。我已经创建了一个扩展QMainWindow的StartWindow类。创建后,我添加了新的方法和属性。自动QT创建者为标题文件生成了这种代码:
#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文件中给出I值2时:
ui->i = 2;
我得到此错误:
/home/carl/qt5projects/dopproject/startwindow.cpp:13:错误:'class ui :: startwindow'没有成员名称'i''
但我可以通过范围分辨率操作员访问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
这就是为什么您无法通过ui
访问i
,但必须直接访问它。
i
和ui
都是类成员变量,您应该以访问ui
的方式访问i
。
ui是启动窗口指针类型。
ui
是不是类型StartWindow*
的,它是Ui::StartWidow*
类型。这是一个完全独立的类,尽管具有相同的名称,但在startwindow.h
文件开头的Ui
名称空间中被声明:
#include <QMainWindow>
//class declaration
namespace Ui {
class StartWindow;
}
//...
此类是由Designer创建的startwindow.ui
文件的QT用户界面编译器生成的。默认情况下,该类通过调用setupUi()
成员函数来使用StartWindow
类构造函数的开头:
StartWindow::StartWindow(QWidget *parent) :
QMainWindow(parent),
//an instance of Ui::StartWindow is created
ui(new Ui::StartWindow)
//^^^^^^^^^^^^^^^^^^^^^
{
//the instance is used to create the widgets and set up layouts
//that you have defined in the designer
ui->setupUi(this);
//...
}
在文件ui_startwindow.h
中定义了Ui::StartWindow
类,该类应包括在startwindow.cpp
类的开头。请查看此问题以获取有关ui_startwindow.h
文件的信息。
相关文章:
- C++:从属性类调用顶级类方法
- 类对象属性是否可以调用返回属性应具有的值的方法C++?
- 派生值或附加属性的方法
- 指示 Qi 变换属性失败的适当方法是什么?
- 根据 C++ 中的属性对对象类进行分区的优化方法
- Windows 脚本主机 - 错误 '800A01B6' 对象不支持此属性或方法
- 将提升属性树 (ptree) 序列化为向量的最快方法是什么
- 如何将按钮添加到节点的属性编辑器面板,该面板调用该节点内的方法?
- 正确的方法或设计模式,以简化类中的“operatorX”函数,以按给定顺序比较相同类型的属性
- 有没有一种方法可以创建具有广义属性的命名空间
- 当应用于静态方法时,为什么constexpr属性不起作用
- 通过"a pointer of the base class"访问未在基类中声明的子类的方法或属性(动态)
- LNK2001带有静态属性和方法的错误(QT,C )
- 从 Arduino 库中的方法获取私有布尔属性
- 成员属性作为方法的默认值
- 使初始化变量可供多个属性初始化方法访问
- QT UI指针中缺少属性和方法
- 删除/编辑 ATL COM DLL 属性/方法
- COM属性方法和常规接口方法之间的区别是什么
- 如何在Visual C++2008中查找未使用的属性/方法