知识

最后更新于:2022-04-02 02:09:26

[TOC] ## 元对象系统 Qt中的元对象系统(Meta-Object System)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。元对象系统是基于以下三个条件的: * 该类必须继承自`QObject`类; * 必须在类的私有声明区声明`Q_OBJECT`宏(在类定义时,如果没有指定`public`或者`private`,则默认为private); * 元对象编译器Meta-Object Compiler(moc),为`QObject`的子类实现元对象特性提供必要的代码 还提供了其他一些特性: * `QObject::metaObject()`函数可以返回一个类的元对象,它是`QMetaObject`类的对象; * `QMetaObject::className()`可以在运行时以字符串形式返回类名,而不需要C++编辑器原生的运行时类型信息(RTTI)的支持; * `QObject::inherits()`函数返回一个对象是否是`QObject`继承树上一个类的实例的信息; * `QObject::tr()`和`QObject::trUtf8()`进行字符串翻译来实现国际化; * `QObject::setProperty()`和`QObject::property()`通过名字来动态设置或者获取对象属性; * `QMetaObject::newInstance()`构造该类的一个新实例
';