4

我开始使用 Qt(和 C++,在较小程度上),我想确保在继续之前我完全理解了基本代码。我知道初始化列表中的第一个元素用于选择非默认继承构造函数。

但是,ui(new Ui::TestAppMain) 的目的是什么?在我看来,这将是一个无限循环,因为 ui 在构造函数中被设置为 TestAppMain 的一个新实例,但事实并非如此。

namespace Ui {
    class TestAppMain;
}

class TestAppMain : public QMainWindow{
    public:
        explicit TestAppMain(QWidget *parent = 0);

    private:
        Ui::TestAppMain *ui;
};

TestAppMain::TestAppMain(QWidget *parent): QMainWindow(parent), ui(new Ui::TestAppMain){
    ui->setupUi(this);
}
4

1 回答 1

10

Ui::TestAppMainTestAppMain和你的班级不一样。它是 Qt 从您在 Qt Creator 中创建的 .ui 文件生成的另一个 C++ 类。为了避免混淆和命名冲突,Qt 将所有这些生成的类放在Ui命名空间中。

Ui::MyWidget在您自己的类中包含 的实例是标准的 Qt 实践MyWidget。在您的情况下,在您实例化之后,您使用该对象根据您在 TestAppMain.ui 中指定的布局Ui::TestAppMain来初始化您的主窗口(由您的类表示)。TestAppMain这是通过调用来完成的ui->setupUi(this)

于 2011-09-18T22:56:20.533 回答