• Qt 关于QT_BEGIN_NAMESPACE宏的作用


    最近注意到QT_BEGIN_NAMESPACE宏,具体如下:

    1. 1 #ifndef PREVIEWWINDOW_H
    2. 2 #define PREVIEWWINDOW_H
    3. 3
    4. 4 #include <QWidget>
    5. 5
    6. 6 QT_BEGIN_NAMESPACE
    7. 7 class QTextBrowser;
    8. 8 QT_END_NAMESPACE
    9. 9
    10. 10 class PreviewWindow : public QWidget
    11. 11 {
    12. 12 Q_OBJECT
    13. 13 public:
    14. 14 PreviewWindow(QWidget *parent = 0);
    15. 15 void setTexts(QString s,bool b);
    16. 16
    17. 17 protected:
    18. 18 void moveEvent ( QMoveEvent * event );
    19. 19
    20. 20 private:
    21. 21 QTextBrowser *t;
    22. 22 };
    23. 23 #endif

    在其cpp文件中使用了QTextBrowser类,qtcreator的点的代码提示也没有出来(还是因为没有包括#include

    对于QT_BEGIN_NAMESPACE宏的作用

    QT_BEGIN_NAMESPACE其实就是个宏,以前Qt4是没有命令空间的,后来才加上的,编译Qt源码时会有选项,是否将这些类放到专用的Qt命令空间内,默认是没有的。这就出来问题了,为了统一,如果你的代码在默认没有Qt命令空间的SDK中编译,那你就不用在前面加上命令空间,反之则需要。

    为了屏蔽上面这个差异,使得你的代码能在这两种情况下都进行编译,Qt就提供了QT_BEGIN_NAMESPACE宏,这样开发者就省的自己来用程序或宏进行处理了。

    至于说该宏提升编译速度什么的,那是上述类的声明的作用,与Qt无关的(也即与该宏QT_BEGIN_NAMESPACE无关),若要大幅提升编译速度需要开启qt的预编译头文件,会另起章节解说,并附测试结果。

    CSDNqt大纲:Qt开发必备技术栈学习路线和资料

    常见的三种包含类的方式

    1. 1 #define PREVIEWWINDOW_H
    2. 2
    3. 3 #include <QMainWindow>
    4. 4
    5. 5 #if 0
    6. 6 // 方式一:
    7. 7 #include <QTextBrowser>
    8. 8 #endif
    9. 9
    10. 10 #if 0
    11. 11 // 方式二: 比方式一可轻微提升编译速度
    12. 12 class QTextBrowser;
    13. 13 #endif
    14. 14
    15. 15 #if 1
    16. 16 // 方式三: 编译速度与方式二一样,该宏用于自编译qt源码是否启动命令空间的补充
    17. 17 QT_BEGIN_NAMESPACE
    18. 18 class QTextBrowser;
    19. 19 QT_END_NAMESPACE
    20. 20
    21. 21 #endif
    22. 22
    23. 23 class PreviewWindow : public QMainWindow
    24. 24 {
    25. 25 Q_OBJECT
    26. 26 public:
    27. 27 explicit PreviewWindow(QWidget *parent = 0);
    28. 28
    29. 29 signals:
    30. 30
    31. 31 public slots:
    32. 32
    33. 33 };
    34. 34
    35. 35 #endif // PREVIEWWINDOW_H

    本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 相关阅读:
    HTML5七夕情人节表白代码 (动态3D相册) HTML+CSS+JS
    160_技巧_Power BI 新函数-计算工作日天数
    java 中 object 转 list
    OFD转PDF ~java实现
    JS,jQuery常用语法记录
    metaRTC+mbedtls实现android平台上更高效的webrtc
    Apache DolphinScheduler 3.0.0 正式版发布!
    Cpp/Qtday070914cpp基础
    R16 Type II量化反馈码本的产生
    Iphone文件传到电脑用什么软件,看这里
  • 原文地址:https://blog.csdn.net/m0_73443478/article/details/127873691