Sho*_*ook 4 c++ qt initialization-list
我开始使用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);
}
Run Code Online (Sandbox Code Playgroud)
Mac*_*tle 10
Ui::TestAppMain
和你的TestAppMain
班级不一样.它是Qt从你在Qt Creator中创建的.ui文件生成的另一个C++类.为了避免混淆和命名冲突,Qt将所有这些生成的类放在Ui
命名空间中.
Ui::MyWidget
在您自己的类中包含一个实例是标准的Qt实践MyWidget
.在您的情况下,在实例化之后Ui::TestAppMain
,您将使用该对象TestAppMain
根据您在TestAppMain.ui中指定的布局初始化主窗口(由您的类表示).这是通过调用来完成的ui->setupUi(this)
.