指针作为类变量 Qt
Posted
技术标签:
【中文标题】指针作为类变量 Qt【英文标题】:Pointer as a class variable Qt 【发布时间】:2018-06-28 16:46:45 【问题描述】:当你刚刚创建 Qt 应用程序时,它会自动为你创建主窗口,我几乎理解了除了最后一件事之外的所有内容:范围
#include <QMainWindow>
namespace Ui
class MainWindow;
class MainWindow : public QMainWindow
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
;
谁能解释Ui::MainWindow *ui;
是什么类型的指针,它的用途是什么?据我了解,它是一个“用于未来”的空指针,类型为 MainWindow 类,所以这意味着该成员是它自己的类中的一个对象,对吗?
附:以及创建该命名空间 Ui 的需要是什么?
【问题讨论】:
【参考方案1】:这是指向自动生成类的指针(基于 Qt 设计器创建的 .ui 文件,或者更准确地说 - uic.exe)。您需要它来访问您在设计器中放置在表单上的小部件(因为您没有在代码中手动创建它们)。
除此之外,没什么特别的。只是指向某个前向声明的类的指针(在您的情况下,它将在 ui_MainWindow.h 中定义)。它有自己的命名空间,不会与你的类发生冲突。
【讨论】:
所以我假设我可以删除由 Qt 创建的无用命名空间? 你不应该删除命名空间,那么 MainWindow.cpp 将无法编译(因为你的编译器不知道该类,因为生成的文件不包括在内)。 @Engelard 从某种意义上说,这是为您的 UI 实时生成的类,这并不是无用的。因此,除非您还更改了自动生成的文件,否则您无法删除它,这将在您的下一次更改时被覆盖。所以我劝你不要。此外,命名空间没有任何问题,删除它也无济于事,除非你对命名空间有一些无法解释的深仇大恨。以上是关于指针作为类变量 Qt的主要内容,如果未能解决你的问题,请参考以下文章