读书人

建立的空缺QT项目默认生成代码的含义

发布时间: 2013-06-19 10:26:41 作者: rapoo

建立的空白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的样式。

读书人网 >QT开发

热点推荐