指针作为类变量 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的主要内容,如果未能解决你的问题,请参考以下文章

如何在线程中调用其他类的成员函数和变量

指向类方法 QT 的指针向量

类函数指针(不涵盖:返回类函数指针)

Qt:通过类 C 将变量从 ClassA 传递到 ClassB

通过指向派生类的指针访问派生成员变量

从类指针向量创建成员变量向量