我开始使用Qt(和C ++,在较小程度上),我想确保在继续之前完全理解基本代码。我知道初始化列表中的第一个元素用于选择非默认的继承构造函数。
ui(新的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);
}
答案 0 :(得分:10)
Ui::TestAppMain
与您的TestAppMain
课程不同。它是Qt从你在Qt Creator中创建的.ui文件生成的另一个C ++类。为了避免混淆和命名冲突,Qt将所有这些生成的类放在Ui
命名空间中。
在您自己的班级Ui::MyWidget
中加入MyWidget
的实例是一种标准的Qt做法。在您的情况下,在实例化Ui::TestAppMain
之后,您将使用该对象根据您在TestAppMain.ui中指定的布局初始化主窗口(由TestAppMain
类表示)。这是通过调用ui->setupUi(this)
来完成的。