MainWindow是否在qt5中自行初始化?

Fir*_*r12 2 c++ qt qt5

我尝试学习qt 5,但不明白一件事.Qt创建者默认生成这两个文件:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;    
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)    // <!-- what does it do?
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
Run Code Online (Sandbox Code Playgroud)

我不明白这个:ui(new Ui::MainWindow)在构造函数中?我知道它初始化ui指针,但对于什么?对自己?所以基本上,它是否意味着MainWindow用自己初始化,或者可能引用其他实例MainWindow?如果是这样,它是一些c ++编程模式或方法吗?它有名字,所以我可以自己阅读.

非常感谢提前解释.

j_k*_*bik 7

它不是MainWindow,它不是Ui::MainWindow- 不是同一类.在类Ui的命名空间是由qmake的(朋友)自动生成的类.此类包含初始化并允许您访问表单上的小部件的代码 - 您在图形Qt设计器中创建的小部件.

此类包含在cpp文件的第二行中包含的文件中:

#include "ui_mainwindow.h"
Run Code Online (Sandbox Code Playgroud)