QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的作用
本文根据在网上找到的一些资料总结来的,并加入了一些自己的想法。
在源代码中是这样定义的:
# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
# define QT_END_NAMESPACE }
当我们写出下面的代码时:
namespace QT_NAMESPACE {
class QPainter;
class QPaintEvent;
}
实际上相当于:
QT_BEGIN_NAMESPACE
class QPainter;
class QPaintEvent;
QT_END_NAMESPACE
这样可以在用户自己定义的命名空间中编译整个Qt程序。
如果我们在头文件中只是使用类的指针声明,而不需要真正将其实例化,那么我们就没有必要#include相应的头文件,只需要在将其真正实例化的cpp文件中#include相应的头文件即可。
这样做的好处:
当我们改动类后,不会引发引入大量文件的重新编译。
如果我们不用QT_BEGIN_NAMESPACE和QT_END_NAMESPACE,而是直接声明,那么我们cpp文件中#include相应的头文件时,会出现冲突,因为对于一个类,如QPainter我们声明了两次。
本文部分内容引用在下面两篇文章:
http://blog.csdn.net/siren0203/article/details/5648965
http://my.oschina.net/xiangxw/blog/10927
QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的作用的更多相关文章
- Qt中QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的作用
在Qt中,我们经常会看到 QT_BEGIN_NAMESPACE class QAction; class QMenu; class QPlainTextEdit; QT_END_NAMESPACE 这 ...
- Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE
Qt里面引入头文件的两种方式: 1. #include <QMdiArea> #include<QSplashScreen> 2. QT_BEGIN_NAMESPACE cla ...
- QT_BEGIN_NAMESPACE QT_END_NAMESPACE
QT_BEGIN_NAMESPACEQT_END_NAMESPACE 在源代码中是这样定义的: 1 2 # define QT_BEGIN_NAMESPACE namespace QT_NAMESPA ...
- Qt QT_BEGIN_NAMESPACE
问题 阅读Qt的Demo源码的时候,经常在头文件中, 声明类型的部分有以下这样的代码: class MyClassA; ///< 自定义类的声明 QT_BEGIN_NAMESPACE class ...
- Qt项目界面文件(.ui)及其作用(超详细)
http://c.biancheng.net/view/1820.html Qt 项目中,后缀为“.ui”的文件是可视化设计的窗体的定义文件,如 widget.ui.双击项目文件目录树中的文件 wid ...
- if __name__== "__main__" 的意思(作用)python代码复用
if __name__== "__main__" 的意思(作用)python代码复用 转自:大步's Blog http://www.dabu.info/if-__-name__ ...
- (转载)linux下各个文件夹的作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
- github中的watch、star、fork的作用
[转自:http://www.jianshu.com/p/6c366b53ea41] 在每个 github 项目的右上角,都有三个按钮,分别是 watch.star.fork,但是有些刚开始使用 gi ...
- web.xml中welcome-file-list的作用
今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...
随机推荐
- hrbust1841再就业(状态压缩dp)
本人刚学压缩dp,只能对这些水题写题解 一方面对自己的理解有加深作用 另一方面希望和各位大牛交流交流..... 如果有对状态dp不太了解的童鞋可以参考入门知识:http://wenku.baidu.c ...
- 如何将推送证书p12导出为pem
1. 在Mac上启动Keychain助手,然后在login keychain中选择 Certificates分类.你将看到一个可展开的“Apple Development Push Services” ...
- MVC 外网 上传 下载 实现方式(一)
本人在实现第三方文件存储时,为实现Web网络的上传和下载 的实现费了一些时间,然后总结到的一些问题: 如有思路狭隘之处还望指正! 文件上传时: 实现方式 为: 客户端=>第三方=>服务器( ...
- Ubuntu 修改 ssh 登录后的欢迎信息
/etc/update-motd.d/90-updates-available cd /etc/update-motd.d/ vi 10-help-text 修改或者注释掉里面的内容 vi 90-up ...
- 把数据输出到Word (非插件形式)
项目开发过程中,我们要把数据以各种各样的形式展现给客户.把数据以文档的形式展现给客户相信是一种比较头疼的问题,如果没有好的方法会 使得我的开发繁琐,而且满足不了客户的需求.接下来我会通过两种开发方式介 ...
- Redis使用及优化入门
Redis的优势 MySQL读写慢,Redis内存数据库,读写速度快. 少量的数据要经常读写,尤其是读操作,读写速度要求高. 丰富的数据结构,Redis支持5种数据结构,MySQL字段变化,需要手动维 ...
- Python_Day7_面向对象学习
1.面向对象编程介绍 2.为什么要用面向对象进行开发? 3.面向对象的特性:封装.继承.多态 4.类.方法. 面向过程 VS 面向对象 编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告 ...
- nodejs的第四天学习笔记
一. ECMAScript6(es2015)es6语法 es6/es2015,在es5的基础上扩展了很多新的功能,我们要学习仅仅是es6中的部分常用新功能,这些功能在使用的时候一定要慎重,因为他们之中 ...
- [hadoop] hadoop-all-in-one-伪分布式安装
hadoop伪分布式-all-in-one安装 #查看hadoop 版本 [root@hadoop-allinone-200-123 bin]# pwd /wdcloud/app/hadoop-2.7 ...
- 简述linux的发行版,并描述不同发行版之间的联系与区别
bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...