关于QT_BEGIN_NAMESPACE宏的作用

简介: 关于QT_BEGIN_NAMESPACE宏的作用

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

#ifndef PREVIEWWINDOW_H
#define PREVIEWWINDOW_H
#include <QWidget>
QT_BEGIN_NAMESPACE
class QTextBrowser;
QT_END_NAMESPACE
class PreviewWindow : public QWidget
{
    Q_OBJECT
public:
    PreviewWindow(QWidget *parent = 0);
    void setTexts(QString s,bool b);
protected:
    void moveEvent ( QMoveEvent * event );
private:
    QTextBrowser *t;
};
#endif

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

对于QT_BEGIN_NAMESPACE宏的作用

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

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

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

常见的三种包含类的方式

#ifndef PREVIEWWINDOW_H
#define PREVIEWWINDOW_H
#include <QMainWindow>
#if 0
// 方式一:
#include <QTextBrowser>
#endif
#if 0
// 方式二:    比方式一可轻微提升编译速度
class QTextBrowser;
#endif
#if 1
// 方式三:    编译速度与方式二一样,该宏用于自编译qt源码是否启动命令空间的补充
QT_BEGIN_NAMESPACE
class QTextBrowser;
QT_END_NAMESPACE
#endif
class PreviewWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit PreviewWindow(QWidget *parent = 0);
signals:
public slots:
};
#endif // PREVIEWWINDOW_H



相关文章
|
6月前
|
程序员 编译器 C++
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(一)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
169 0
|
测试技术
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
QT --- VS2017+Qt5.12 编译报错【E2512 功能测试宏的参数必须是简单标识符 】的解决方法
513 0
|
6月前
|
编译器 Linux API
Qt之Q_OBJECT 宏的神奇之旅(二)
Qt之Q_OBJECT 宏的神奇之旅
179 0
|
6月前
|
设计模式 开发框架 编译器
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用(二)
【深入探究Qt内部架构】QObject、事件循环与Q_OBJECT宏的协同作用
211 0
|
6月前
|
安全 Java 编译器
Qt之Q_OBJECT 宏的神奇之旅(一)
Qt之Q_OBJECT 宏的神奇之旅
278 0
|
安全 Java
Qt单例:Qt有专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式
Qt单例:Qt有专门的宏Q_GLOBAL_STATIC,用来实现线程安全的单例模式
1166 0
|
4月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
180 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
88 0
|
2月前
|
开发工具 C++
qt开发技巧与三个问题点
本文介绍了三个Qt开发中的常见问题及其解决方法,并提供了一些实用的开发技巧。
|
2月前

推荐镜像

更多