现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

Qt 的几个核心机制总结:元对象系统

2015-01-23 06:44 工业·编程 ⁄ 共 600字 ⁄ 字号 暂无评论

1.Qt的元对象与标准C++中对象的区别

Qt中的对象系统和标准C++中的对象系统是存在区别的,更确切得讲前者是对后者的一种扩展。每个元对象具有一个元信息,包含有对象的类名以及相应的信号和槽的列表,以及指向对应函数的指针。

Qt中的元对象系统和标准C++系统的区别有哪些?

1.支持对象间使用信号和槽的机制进行通信

2.动态对象转化

3.可查询可设计的对象属性

4.层次结构可查询的对象树

5.安全的指针管理

6.支持国际化的文本转化

7.支持多任务定时器

8.事件和事件过滤器

但是要注意这些都是靠标准的C++语言来实现的,也是基于标准C++对象实现的。

2.如何实现元对象?

元对象是基于如下3个方面的实现

Object基类

Q_OBJECT宏

moc工具

实现的过程如下:

qmake 生成的makefile自动调用moc工具,moc工具读取头文件,查看是否包含有Q_OBJECT宏定义,如果包含则根据这个文件生成另一个头文件,该头文件包含了元对象必须包含的一些函数的声明,相应的类的源程序也会经过moc工具进行扩展形成最终的源文件,传递给编译器,编译器再根据上一步处理的源文件形成连接文件,最后链接器再将链接文件同其他链接文件链接起来,形成可执行文件。

在这个过程中Q_OBJECT宏的作用是声明了每一个Q_object子类中必须实现的一些函数。

而moc工具生成了Q_OBJECT声明的所有函数和所有信号的实现。

可以用下面的图来概括

给我留言

留言无头像?