欢迎光临散文网 会员登陆 & 注册

零声Qt开发必备技术栈 (Qt5/C语言/c++/数据库/OpenCV/Quick/Qt实战)

2023-05-22 10:52 作者:bili_73767213996  | 我要投稿

QT MOC机制

QT的元对象系统是一个基于标准C++的扩展,能够使c++更好的适应GUI编程,支持开发人员在执行期获取对象的信息,同时这一机制也支持属性以及文本翻译(国际化,多语言)。

由于标准C++并没有提供动态元信息的支持,因此qt通过一个单独的工具moc来处理这个问题,moc工具会解析头文件中被Q_OBJECT宏声明的类,并生成一个单独的标准cpp文件来实现,因此对任何c++编译器而言,QT的moc机制都可以正常工作。

在具体的代码编写中,只有继承自QObject的类中,才可以通过宏Q_OBJECT进行修饰,从而转变成要给元对象。

对于一个元对象,它有如下一些特点

1:可以支持QT特有的signals和slots机制,在不同对象之间进行通信。

2:可以支持QObject::metaObject方法,用于返回类关联的元对象。

3:可以支持QMetaObject::className,用于在执行期获取对象的类名。

4:可以支持QObject::inherits方法,用于判断一个对象是否继承自QObject

5:可以支持QObject::setProperty和QObject::property方法,用于动态的设置和获取属性名称。

6:可以支持通过QMetaObject::newInstance用于构造一个新的实例。


零声Qt开发必备技术栈 (Qt5/C语言/c++/数据库/OpenCV/Quick/Qt实战)的评论 (共 条)

分享到微博请遵守国家法律