qt中的元对象系统
10页1、Qt 中的元对象系统中的元对象系统moc什么是元对象?什么是元对象?In computer science, a metaobject or meta-object is any entity that manipulates, creates, describes, or implements other objects. The object that the metaobject is about is called the base object. Some information that a metaobject might store is the base objects type, interface, class, methods, attributes, variables, functions, control structures, etc.在计算机科学中,元对象是这样一个东西:它可以操纵,创建,描述,或执行其他对象。元对象描述的对象称为基对象。元对象可能存这样的信息:基础对象的类型,接口,类,方法,属性,变量,函数,控制结构等。QT 中的元对象系统中的元对象
2、系统QT 中的元对象系统基于以下三种东西:1. QObject提到这个类,相信大家都不陌生。几乎所有在 QT 开发的类都继承于此类。QObject 这个类为其他需要用到元对象系统的类提供了一个基类。2.Q_OBJECT放在类声明中的 Q_OBJECT 宏是用来为这个类开启元对象特性的,例如动态的属性(dynamic properties),信号(signals)以及槽(slots)。可这个 Q_OBJECT 宏到底是什么呢?如下图所示,大家可以看到它是一些函数和一个静态的类成员。Q_OBJECT 宏内容如下:#define Q_OBJECT public: Q_OBJECT_CHECK static const QMetaObject staticMetaObject; Q_OBJECT_GETSTATICMETAOBJECT virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); QT_TR_FUNCTIONS virtual int qt_metacall(QMe
3、taObject:Call, int, void *); private:而 Q_OBJECT_CHECK 宏的内容是:#define Q_OBJECT_CHECK template inline void qt_check_for_QOBJECT_macro(const T i = i; 这里是检查类声明中是否遗漏 Q_OBJECT 宏,如果遗漏则在编译时给出错误提示。而 QT_TR_FUNCTIONS 宏的内容是:# define QT_TR_FUNCTIONS static inline QString tr(const char *s, const char *c = 0) return staticMetaObject.tr(s, c); static inline QString trUtf8(const char *s, const char *c = 0) return staticMetaObject.trUtf8(s, c); static inline QString tr(const char *s, const char *c, int n) return s
4、taticMetaObject.tr(s, c, n); static inline QString trUtf8(const char *s, const char *c, int n) return staticMetaObject.trUtf8(s, c, n); 一些字符串操作的算法,这几个方法实际上是隐藏了父类 QObject 中这个几个方法。我们在类定义中调用的 tr 或是 trUtf8方法都是调用这里的方法。3 MOCwhat does MOC do?MOC 编译器为 QObject 子类提供了一些实现元对象特性所需的一些代码。就比如说信号,大家只是在类声明的时候声明了所需的信号,就像下面这样:样当我们把鼠标放到 Q_SINGNALS 时可以看到下面这个宏感觉有点奇怪,它要替换的是它自己。实际上它只是一个 protected 的关键字。说到这里,大家应该会想到,哦,moc 编译器会用 protected 来替换它。但 moc 编译器做的远过于此,它会用 protected 来替换它,但同时还会为这个信号声明方法体。当 moc 工具读取一个 c+源文件时,如果它发现类的声明
《qt中的元对象系统》由会员m****分享,可在线阅读,更多相关《qt中的元对象系统》请在金锄头文库上搜索。
肿瘤学发展简史
综合实践课折纸ppt
综合实践张开想象的翅膀
综合实践课走进粤菜
综合性学习走进中秋节
1986--2008年全国硕士研究生入学统一考试英语试题及解析
2020版高考数学一轮复习第一章集合与常用逻辑用语第二节命题及其关系充分条件与必要条件课件
2020版高考数学一轮复习第二章函数的概念与基本初等函数Ⅰ第四节函数的图象课件理
2020版高考数学一轮复习第一章集合与常用逻辑用语第三节简单的逻辑联结词全称量词与存在量词课件理
2020版高考数学一轮复习第二章函数的概念与基本初等函数Ⅰ第五节二次函数与幂函数课件理
2020版高考数学一轮复习第二章不等式第二节一元二次不等式及其解法课件
2020版高考数学一轮复习第二章函数的概念与基本初等函数Ⅰ第七节对数与对数函数课件理
2020版高考数学一轮复习第二章不等式第四节二元一次不等式组及简单的线性规划问题课件
2020版高考数学一轮复习第二章不等式第一节不等关系与不等式课件
2020版高考数学一轮复习第二章不等式第三节绝对值不等式课件
2020版高考历史一轮复习第五单元古代中国经济的基本结构与特点第1讲古代中国的农业和手工业课件新人教版必修
2020版高考数学一轮复习第二章函数的概念与基本初等函数Ⅰ第三节函数的奇偶性及周期性课件理
2020版高考数学一轮复习第二章函数的概念与基本初等函数Ⅰ第九节函数模型及其应用课件理
2020版高考数学一轮复习第二章不等式第五节基本不等式课件
2020版高考历史一轮复习第十三单元近现代中国的思想解放及理论成果和科教文化第3讲现代中国的科技教育与文学艺术课件新人教版必修
2023-08-28 32页
2023-08-14 14页
2023-05-06 1页
2022-09-13 53页
2022-06-04 1页
2022-06-04 3页
2022-06-04 6页
2022-05-20 10页
2022-04-05 14页
2021-12-16 20页