Qt文档阅读笔记-Object Model初步解析

581 篇文章 121 订阅
195 篇文章 13 订阅

对象模型

标准C++对象模型提供了对象范式在运行时的高效性。但是他的一些静态性质在某些领域是不灵活的。在GUI程序中不仅要运行时的高效还需要较高的灵活性。Qt对象模型不急结合了C++运行时的高效并且还相当的灵活。

Qt在C++的基础上海增加了如下特征:

1. 一个强大的机制使得各个对象之间无缝交流:信号和槽;

2. 可查询及可被识别:对象属性;

3. 强有效的事件及事件过滤;

4. 国际化上下文字符串翻译;

5. 复杂的驱动计时器,在以事件为驱动的GUI中进行优雅的调用;

6. 对象树:使得各个对象都有所属;

7. 自定义类型的创建

上述的有些特征是通过在标准C++上继承得到的,如QObject。信号与槽,属性系统是由元对象系统提供的,也就是Qt自己的Meta-Object Compiler。

元对象系统是C++的扩展【这里要注意官方对元对象系统用的词是extension,而国际化上下文等用的是implement】的,这样特性更好的构成了GUI编程。

 

下面的类都是Qt的对象模型:

QMetaClassInfo关于类的附加信息
QMetaEnum关于枚举器的元数据
QMetaMethod关于成员函数的元数据
QMetaProperty关于属性的元数据
QMetaType管理元对象系统的命名类型
QObject所有Qt对象的基类
QSignalBlocker对安全异常的封装与QObject::blockSignals()一样
QObjectCleanupHandler监控多个QObject的运行周期
QMetaObject包含关于Qt对象的元信息
QPointer提供指向QObject的受保护模板类
QSingalMapper绑定可以被识别的发送方的信号
QVariant最常见的Qt数据类型的结合体

 

Qt Objects:身份与值

身份是包含一些特征的。比如双胞胎,虽然他们看起来很像(值一样),但有不同的身份。

克隆身份是比复制以及赋值更为复杂的。

如何理解上面克隆身份,比如:

克隆身份要考虑QObject::objectName()是否唯一。

object层次结构上,克隆的QtObject在object层次结构上该如何保证。

在运行时向某个对象加了个特别的属性,克隆时是否也需要保证。

所以Qt对象都是一种标识,而不是一个值。所以QObject的类或子类都禁止其拷贝和赋值操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值