qt
文章平均质量分 90
zwb139615210
这个作者很懒,什么都没留下…
展开
-
Qt meta-object(一)
这个系列的几篇文章通过阅读Qt帮助文档和相关的源代码来学习研究Qt meta-object所提供的功能,及其实现的方式。Qt meta-object系统基于三个方面:1、QObject提供一个基类,方便派生类使用meta-object系统的功能;2、Q_OBJECT宏,在类的声明体内激活meta-object功能,比如动态属性、信号、槽;3、Meta Object编译器(MOC),为每个QObject派生类生成代码,以支持meta-object功能。QObject定义了从一个QOb...转载 2021-10-28 15:53:44 · 223 阅读 · 0 评论 -
Qt MetaObject System详解之五:signal&slot
本篇探析signal slot的连接和调用是如何实现的。宏SLOT,SIGNAL在qobjectdefs.h中有这样的定义:# define METHOD(a) "0"#a# define SLOT(a) "1"#a# define SIGNAL(a) "2"#a不过是在方法签名之前加了一个数字标记。因为我们既可以将signal连接到slot,也可以将signal连接到signal,所有必须要有某种方法区分一下。QObject::connect()view pla...转载 2021-10-28 15:51:35 · 184 阅读 · 0 评论 -
Qt MetaObject System详解之四:meta call
所谓meta call就是通过object的meta system的支持来动态调用object的方法,metacall也是signal&slot的机制的基石。本篇通过参考源代码来探究meta call的实现方法。QMetaObject::invokeMethod():boolinvokeMethod( QObject *obj, const char *member, Qt::ConnectionTypetype, QGenericReturnArgumentret, Q...转载 2021-10-28 15:50:47 · 751 阅读 · 1 评论 -
Qt MetaObject sysmtem 详解之三:QMetaObject接口实现
本篇从Qt MetaObject源代码解读相关接口的实现,这些接口都定义于qmetaobject.cpp中。QMetaObject::className()inline const char *QMetaObject::className() const{ return d.stringdata; }从前一篇可知,d.stringdata就是那块字符串数据,包含若干c字符串(以'\0')结尾。如果把d.stringdata当做一个c字符串指针的话,就是这个字符串序列的第一个字符串,正是类名。转载 2021-10-28 15:49:50 · 365 阅读 · 0 评论 -
Qt MetaObject System详解之二:meta数据和数据结构
这个系列的几篇文章通过阅读Qt帮助文档和相关的源代码来学习研究Qt meta-object所提供的功能,及其实现的方式。Qt meta-object系统基于三个方面:1、QObject提供一个基类,方便派生类使用meta-object系统的功能;2、Q_OBJECT宏,在类的声明体内激活meta-object功能,比如动态属性、信号、槽;3、Meta Object编译器(MOC),为每个QObject派生类生成代码,以支持meta-object功能。QObject定义了从一个QOb...转载 2021-10-28 15:17:05 · 422 阅读 · 0 评论