MainWindow 是否在 qt5 中用自身初始化

Is MainWindow initialized with itself in qt5?

本文关键字:初始化 是否 qt5 MainWindow      更新时间:2023-10-16

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

主窗口.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

主窗口.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;
}

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

提前感谢您的解释。

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

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

#include "ui_mainwindow.h"