Qt元对象系统(The Meta-Object System)了解一下

元对象系统(The Meta-Object System)

Qt官方帮助文档是这样描述Qt元对象系统的:
在这里插入图片描述
也就是说Qt的元对象系统呢,为对象之间的交互提供了信号槽机制,运行时信息和动态属性系统。怎么理解,先不忙深入理解,跟着官方文档走一遍。

元对象系统基于

在这里插入图片描述
大意是说,要想用上元对象系统,咱得满足这三步:

  1. Qobject类作为所有要利用元对象系统的基类。(第一步:基于Qobject类派生子类
  2. 在类的private段声明Q_OBJECT宏,以可以使用元对象特性,例如动态属性,信号与槽。(第二步:声明Q_OBJECT宏
  3. 元对象编译器为Qobject子类提供了必要的代码以实现元对象特性。(第三步:元对象编译阶段为已声明Q_OBJECT宏的Qobject子类包含实现元对象特性的代码
    Moc工具读取C++源文件。如果找到一个或多个类声明包含Q_OBJECT宏。它为每个类生成另外的一个包含元对象代码C++源文件。这些生成的源文件不仅仅包含到类的源文件中,而且类在编译和链接都用到。

元对象系统附加功能

在这里插入图片描述

  1. QObject::metaObject()返回类相关联的元对象。
  2. QMetaObject::className()返回运行时类名,不需要用C++编译器的RTTI。
  3. QObject::inherits() 返回一个对象是否是Qobject继承树的一个类的实例。
  4. QObject::tr() 和 QObject::trUtf8() 转换一个字符串实现国际化。
  5. QObject::setProperty() 和 QObject::property()通过名称动态设置和获取属性。
  6. QMetaObject::newInstance() 创建类的一个实例。

深入理解元对象系统

Qobject类

上节说到,Qobject类是所有要利用元对象系统的基类,还有其强大的Q_OBJECT宏,来一起探索一下:
在这里插入图片描述
QObject类是所有Qt对象的基类,Qt对象模型的核心。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值