Meta-Object系统为我们提供了信号-槽机制、运行期类型信息和动态属性系统。
Meta-Object系统是基于以下三点才能正常运行的:
1. QObject做为一个基类,让派生至它的类能使用到meta-object系统的各种特性;
2. 在类声明中使用到的宏Q_OBJECT,使得meta-object系统的各种特性可用;
3. Meta-Object Compiler(moc)为所有QObject派生类提供了meta-object特性的实现代码;
在编译的时候Moc工具会去读取c++源文件,如果发现类声明中包含了宏Q_OBJECT,它会自动生成另外一份c++源文件,为每一个类添加了meta-object的实现代码。
除了提供信号-槽机制,meta-object代码还提供了以下几点特性&