我正在学习Qt,Qt 5。当我启动generated并创建一个具有所有默认设置的项目时,我会生成以下2个文件,(不包括main.cpp和.pro文件)
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_Hmainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}现在,我更喜欢这样做,
my_mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ui_mainwindow.h"
class MainWindow : public QMainWindow, private Ui_MainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
};
#endif // MAINWINDOW_Hmy_mainwindow.cpp
#include "my_mainwindow.h"
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
setupUi(this);
}
MainWindow::~MainWindow()
{
}这里是我的代码和Qt代码之间的主要区别:
namespace Ui。(这里有人能解释一下这个名称空间的用法吗?)MainWindow类来自QMainWindow和Ui_MainWindow,而Qt的代码只从QMainWindow类继承它。我的问题是,使用我的方法有什么缺点,还是使用question的方法有什么好处?请详细回答。
发布于 2013-06-21 14:40:35
#include "ui_mainwindow.h",而这又会拖进来自QtWidgets (如<QLabel>、<QPushButton>等)的许多包含。这大大降低了编译速度,因为现在每个包含mainwindow.h的人都包含了这些QtWidgets。当使用Ui类作为成员并进行前向声明时,所有这些都只需要在编译mainwindow.cpp时编译,而不需要包含来自其他地方的mainwindow.h。https://stackoverflow.com/questions/17237152
复制相似问题