MainWindow 是否在 qt5 中用自身初始化
Is MainWindow initialized with itself in qt5?
我尝试学习 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"
相关文章:
- 列表初始化是否将原子初始化为零
- 使用函数声明进行函数指针初始化 - 是否可能
- 值初始化是否适用于原子对象?
- 聚合的值初始化是否使用其成员的默认初始值设定项?
- C 11联合会的空列表初始化 - 是否保证可以初始化工会的全长
- 找出静态初始化是否结束
- 非本地非内联变量的初始化:是否严格在"main()"函数调用之前进行
- 空字符数组的初始化是否有效
- 变量零初始化-是否有未定义的行为
- 0-原子的初始化是否保证将值成员设置为0
- POD 类对象初始化是否需要构造函数
- 在C++中使用类似 c 的初始化或构造函数初始化是否被认为更好
- 类内成员初始化是否删除赋值运算符
- C++11;非静态数据成员初始化是否可以访问其他数据成员
- 列表初始化是否为隐式转换
- 复制列表初始化是否在概念上调用复制 ctor
- 如何测试/验证零初始化是否发生
- C++默认初始化是否保留先前的零初始化
- 使用新结构体进行聚合初始化是否有效
- 检测CRT初始化是否在注入过程中完成