Qt文档阅读笔记-Object Model初步解析
发布日期:2021-06-30 10:46:54 浏览次数:3 分类:技术文章

本文共 1016 字,大约阅读时间需要 3 分钟。

对象模型

标准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的类或子类都禁止其拷贝和赋值操作。

转载地址:https://it1995.blog.csdn.net/article/details/115107791 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux笔记-centos7编译安装svn 1.14.1
下一篇:Spring Boot笔记-利用Quartz进行定时任务,利用websocket推送到浏览器(界面为thymeleaf)

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月09日 03时21分17秒