建立的空缺QT项目,默认生成代码的含义是这样的么
建立的空白QT项目,默认生成代码的含义是这样的么?默认建立的项目有3个文件:mainwindow.hmain.cppmainwindo
建立的空白QT项目,默认生成代码的含义是这样的么?
默认建立的项目有3个文件:
mainwindow.h
main.cpp
mainwindow.cpp
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
问题1:请问这个代码里
namespace Ui {
class MainWindow;
}
表示建立一个命名空间,在这个空间里了建立一个类 名字叫MainWindow 是吗?
问题2:如果问题1成立,那么
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
这个类定义 为什么没有写在命名空间里 而是写在命名空间外? 这样写在外面不会出错吗?
问题3:
private:
Ui::MainWindow *ui;
为什么这里不是 直接写 MainWindow *ui; 难道命名空间里的MainWindow 和这里声明的类MainWindow 不是同一个?
//接下来说说这个文件里 mainwindow.cpp 的构造函数
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
问题4: 【: QMainWindow(parent)】 这个冒号 后面跟这这个函数什么意思,有何用意?
问题5:【, ui(new Ui::MainWindow)】 逗号后面跟这个函数 又有何意?
本人新手,最近看了c++的书 刚好有点疑惑 ,相信这个疑惑解决后,又能更上一层楼,特来求助
Qt 对象
[解决办法]4:调用基类的构造函数
5:初始化成员变量
[解决办法]问题一,答案是肯定的。
问题二,命名空间里是声明,外面是定义,声明和定义分开写是没有问题的,和嵌套类差不多吧。
问题三,当然不是同一个,用Ui::MainWindow *ui;表明是用自己设计的UI窗口类定义了一个指针。在构造函数中还会有这样一行代码ui.setupUi(this);这里的this才是你定义的MainWindow窗口类指针,这里将MainWIndow窗口类设置为ui的样式。