一、 基本概念
1
、
Qt 的元对象系统是
Qt
对原有的
C++
进行的一些扩展,提供的功能有:
对象间通信的信号和槽机制、运行时类型信息和动态属性系统等
2、要使用元对象系统的功能,需要满足以下三个条件:
①、该类必须继承自 QObject 类,继承顺序排在第一个。②、必须在类声明的私有区域添加 Q_OBJECT 宏,该宏用于启动元对象特性,然后便可使用动态特性、信号和槽等功能了。③、元对象编译器 (moc) 为每个 QObject 的子类,提供实现了元对象特性所必须的代码。
3、元对象系统具体运行原则:
① 因为元对象系统是对 C++ 的扩展,因此使用传统的编译器是不能直接编译启用了元对象系统的 Qt 程序的,对此在编译 Qt 程序之前,需要把扩展的语法去掉,该功能就是 moc 要做的事。② moc 全称是 Meta-Object Compiler( 元对象编译器 ) ,它是一个工具 ( 类似于 qmake), 该工具读取并分析 C++ 源文件,若发现一个或多个包含了 Q_OBJECT 宏的类的声明,则会生成另外一个包含了 Q_OBJECT 宏实现代码的 C++ 源文件 ( 该源文件通常名称为 moc_*.cpp) ,这个新的源文件要么被 #include 包含到类的源文件中,要么被编译键接到类的实现中( 通常是使用的此种方法 ) 。注意:新文件不会“替换”掉旧的文件, 而是与原文件一起编译。