首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MainWindow和Ui_MainWindow继承QMainWindow类

从MainWindow和Ui_MainWindow继承QMainWindow类
EN

Stack Overflow用户
提问于 2013-06-21 13:57:14
回答 1查看 7.4K关注 0票数 3

我正在学习Qt,Qt 5。当我启动generated并创建一个具有所有默认设置的项目时,我会生成以下2个文件,(不包括main.cpp和.pro文件)

mainwindow.h

代码语言:javascript
复制
#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

mainwindow.cpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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_H

my_mainwindow.cpp

代码语言:javascript
复制
#include "my_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :   QMainWindow(parent)
{
    setupUi(this);
}

MainWindow::~MainWindow()
{

}

这里是我的代码和Qt代码之间的主要区别:

  1. 代码中没有namespace Ui。(这里有人能解释一下这个名称空间的用法吗?)
  2. 我继承MainWindow类来自QMainWindowUi_MainWindow,而Qt的代码只从QMainWindow类继承它。

我的问题是,使用我的方法有什么缺点,还是使用question的方法有什么好处?请详细回答。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-21 14:40:35

  1. 命名空间的一个优点是它可以防止命名冲突。来自QtDesigner的所有自动生成的名称都保留在它们自己的名称空间中。
  2. 使Ui类成为成员而不是使用多重继承的一个优点是,Ui类只需要在头中进行前向声明。在您的代码中,您有一个#include "ui_mainwindow.h",而这又会拖进来自QtWidgets (如<QLabel><QPushButton>等)的许多包含。这大大降低了编译速度,因为现在每个包含mainwindow.h的人都包含了这些QtWidgets。当使用Ui类作为成员并进行前向声明时,所有这些都只需要在编译mainwindow.cpp时编译,而不需要包含来自其他地方的mainwindow.h
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17237152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档