Qt元对象系统
Qt 中引入了元对象系统(MOC)对标准 C++语言进行扩展,增加了信号与槽、属性系统、动态翻译等特性。
- 元对象是指能够操纵、创建、描述或执行其他对象的对象;
- 元对象可能包含的信息包括基础对象的类型、接口、类、方法、属性、变量和控制结构等
一、元对象系统概述
构建项目时,MOC会读取 C++ 源文件,当它发现类的定义里有 Q_OBJECT 宏时,它就会为这个类生成另一个包含元对象支持代码的 C++ 源文件,这个生成的源文件连同类的实现文件一起被标准 C++ 编译器编译和连接。
- QObject 类是所有使用元对象系统的类的基类。
- 必须在一个类的开头部分插入宏 Q_OBJECT,这样这个类才可以使用元对象系统的特性。
- MOC 为每个 QObject 的子类提供必要的代码来实现元对象系统的特性。
元对象系统的特性通过QObject 的一些函数来实现,其核心特性如下。
-
元对象
-
每个 QObject 及其子类的实例都有一个元对象
-
metaObject():返回元对象指针,静态变量 staticMetaObject 是元对象
-
-
类型信息
- inherits():可以判断对象是不是从某个类继承的类的实例
-
对象树
-
对象树指的是表示对象
-