【QT】什么是Qt元对象系统

Qt元对象系统,即meta object system(mos),提供了大家熟知的用于对象间信息传递的信号与槽机制,运行时类型信息和动态属性系统。

mos基于三件法宝:
一是QObject类,是所有Qt对象的基类,可以很好的使用mos。
二是Q_OBJECT宏,在类private部分声明,用于激活mos特性,例如动态属性、信号与槽。
三是元对象编译器,即meta object compiler(moc),为QObject的派生类提供了必要的代码以实现mos特性。例如Example.h中声明了Example类,继承自QObject类且使用了Q_OBJECT宏,那么moc就会找到用Q_OBJECT宏声明的这个Example类,然后生成一个moc_Example.cpp文件,记录了相关的mos代码。

mos中除了信号与槽这个核心外,还有一些实用的东西:
1、QObject::metaObject(),返回当前类的元对象信息,是个QMetaObject指针;
      QObject::staticMetaObject也可以获取当前类的元对象信息,类型是QMetaObject。
2、QObject::inherits(),判断当前对象实例的类继承关系。
3、QObject::tr(),Qt语言国际化,返回类型是QString。
4、QObject::property()/setProperty(),通过属性名动态获取/修改属性值。
5、QMetaObject::className(),运行时返回类名,返回类型是char*。
6、QMetaObject::newInstance(),构造一个新的实例。
7、qobject_cast(),动态类型转换,类似于标准C++的dynamic_cast(),不同的是它不需要RTTI(run time type information)且不受动态库的限制。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值