Qt
文章平均质量分 83
专注客户端技术
这个作者很懒,什么都没留下…
展开
-
(转载)Qt之美(一) D指针/私有实现
相信不少刚开始阅读Qt源代码的朋友在看到其中的Private类和诸如Q_D、Q_Q等宏时都会思考,为什么Qt要用这样一个设计模式呢?这样一段增加了不少复杂度的代码,到底有多大的好处呢?简单的说,这样的好处在于保证代码的二进制兼容性。 什么是二进制兼容性?大名鼎鼎的KDE项目是这样介绍的:一个库是二进制兼容的,如果一个程序和某个库的某个版本动态链接,并且不需要重新编译,即可在安装有该库较新版本原创 2013-05-03 15:24:30 · 828 阅读 · 0 评论 -
(转载)Qt之美(二)元对象
除了D指针,Qt中另一个很有意思的部分就是Q_OBJECT宏了。该宏提供了对元对象的访问,使得能够使用比如信号和槽等QObject的更多特性。元对象提供了诸如类名、属性和方法等的信息,也被称为“反射”。 通过使用QMetaObject,我们能够用如下代码显示一些类的信息: QObject obj; const QMetaObject *metaObj =原创 2013-05-03 15:31:59 · 762 阅读 · 0 评论 -
(转载)Qt之美(三)隐式数据共享
为了最大化资源使用,和最小化数据拷贝,Qt在很多类中用到了隐式数据共享,以便数据仅在被写入时才被拷贝。该机制也被称为flyweight模式。 让我们以QByteArray为例,看看其是如何实现的。其内部使用一个名为Data的私有结构体来追踪共享的数据: struct Data { QBasicAtomicInt ref;// 引用计数器,对其的操作是原子的原创 2013-05-03 15:34:11 · 686 阅读 · 0 评论