Qt中命名空间namespace Ui

1、namespace Ui分析

mainwindow.cpp和对应头文件代码

/*****************************mainwindow.cpp中的头文件声明************************/

#include "mainwindow.h"
#include "ui_mainwindow.h"


/*******************************mainwindow.h**************************************/

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }      //命名空间第一次定义,内部是个类声明
QT_END_NAMESPACE

class MainWindow : public QMainWindow       //此class MainWinwod类不属于命名空间
{
    Q_OBJECT
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
private:
    Ui::MainWindow *ui;         //使用了命名空间的class MainWindow类为指针类型
};
#endif // MAINWINDOW_H


/*********************************ui_mainwindow.h****************************/
//此为ui界面头文件中部分语句
class Ui_MainWindow {......};        //{}内语句已省略

namespace Ui {                       //命名空间第二次定义(注:多次定义会自动合并)
  
  class MainWindow: public Ui_MainWindow {};  
}                                    

 分析:编译的预处理阶段,会把所有.h头文件直接复制过来,相当于合并成一个文件,所以读头文件需要按顺序来读

mainwindow.cpp中第一个头文件为#include "mainwindow.h"。这里第一次定义命名空间namespace Ui,内部只有一个class MainWindow类声明,用于下面不处于命名空间而处于全局区的class MainWindow类的一个成员(即两个类同名,但不是同一个)

         关于命名空间Ui中class MainWindow类定义则在第二个头文件#include "ui_mainwindow.h"中

很明显此类的定义没有新增成员,仅仅就继承了 class Ui_MainWindow 类,这里面就储存了绘制的界面、按钮等等成员和接口。

 2、关于命名空间

多个同名的命名空间定义出现,系统会自动合并,也就是说后续出现的同名命名空间,直接按顺序合并即可(注:出现函数、类的重复定义会报错,但重复声明并不会。如下,并不会报错:)

 使用命名空间的3种方法如下:

                using namespace 空间名;        //此语句后可直接使用该空间内的所有成员

                using 空间名::成员名;        //此语句后的可直接使用该成员

                cout << 空间名::成员 << endl;

(除此之外,就算是命名空间的定义,内部的成员也跟后面的语句没有关系,因为都是独立的空间)                关于更多命名空间可以看此  C++命名空间

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值