对象模型

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

Qt文档阅读笔记-Object Model初步解析相关推荐

  1. Qt文档阅读笔记-Object Model

    Object Model 标准C++对象模型提供了非常有效的运行时的对象范例.但是他的静态属性在某些领域是不灵活的.图形用户界面的编程领域需要运行时的效率和高等级的灵活.Qt提供了这样能力,通过C++ ...

  2. Qt文档阅读笔记-Object Trees Ownership解析与实例(为何某些程序在被关闭的时候会崩溃)

    目录 官方解析 Construction/Destruction Order of QObjects 博主栗子 继承里面构造函数与析构函数的顺序 在Qt中,object trees里面的创建与析构 [ ...

  3. Qt文档阅读笔记-Broadcast Sender Example解析

    此例子展示了使用Qt Network API发送广播包 程序结构如下: 代码如下: sender.h #ifndef SENDER_H #define SENDER_H#include <QWi ...

  4. Qt文档阅读笔记-Broadcast Receiver Example解析

    这篇博文的例子是说明如何在局域网上搭建广播包接收端. 这里使用了Qt Network API,搭建本地广播包接收端. 结构如下: 代码如下: receiver.h #ifndef RECEIVER_H ...

  5. Qt文档阅读笔记-Custom Items Example解析

    这个实例展示了在图中添加自定义item.并且演示了如何去移动. Obj网格文件添加到资源文件中. 注意:一般是在meshes上增加纹理,这里可以直接用QImage添加一个单独的颜色. QImage c ...

  6. Qt文档阅读笔记-GridLayout QML Type解析与实例

    目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...

  7. Qt文档阅读笔记-Image QML官方解析与实例

    目录 官方解析 博主例子 官方解析 Image Image用于展示图片. 使用source属性可以使用URL指定一张图片. 只要是Qt能打开的图片都支持,如果要展示动态图,要使用:BnimatedSp ...

  8. Qt文档阅读笔记-Widgets Tutorial官方解析及实例

    目录 官方解析 博主栗子 官方解析 QWiget通常作为其他窗口的容器,可以使用QWidget到达最小代价定义自定义控件(经验:通常可以采用子类QLabel做成自定义控件) 可以通过构建他的父类对象来 ...

  9. Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例

    目录 官方解析 博主例子 官方解析 easingCurve:QEasingCurve 这个属性保留了动画的缓和曲线. 他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值.下面举出其他曲线的 ...

最新文章

  1. 清华副校长杨斌 :“祛魅”, 科技创新需要避免教育“人性”缺失
  2. 20189216 2018-2019-2 《密码与安全新技术专题》第七次作业
  3. 好好学python · 元组
  4. 子查询in和表连接效率
  5. 【数据分析】“上海名媛”其实是“拼夕夕名媛”,数据分析告诉你真实的名媛其实都是什么样子!...
  6. 【转】应用架构一团糟?如何将单体应用改造为微服务
  7. SpringBoot2.0整合Mybatis-Plus多数据源
  8. sphinx java_把 sphinx 官方提供的 java api 添加到 maven 库
  9. pythontuple_python:tuple 真是鸡肋吗
  10. iOS底层探索之Block(四)——Block的探索和源码分析
  11. 三菱FX3UFX2NFX1N PLC 模拟器模拟通信功能,模拟PLC实体
  12. 0704暑假集训前的欢乐大杂烩总结
  13. 文本超过指定行数折叠
  14. 组合数学$1排列组合
  15. Win10中安装Oracle11g
  16. 软件项目管理第一章---项目管理概念
  17. 【JEECG技术文档】JEECG平台对外接口JWT应用文档V3.7.2
  18. python flask简单使用
  19. M 平台按键强制升级流程分析
  20. html网页引导,网站引导功能实现

热门文章

  1. [Think]故事几则
  2. TreeViewVisitor: 一个快捷访问 TreeView 控件节点的帮助类
  3. 地产遇冷之际,行业竞争加剧,房企如何走出营销低谷,先声夺人?
  4. 0基础怎么做可视化大屏?2种可以节省95%时间的方法教给你
  5. 一辈子的礼物56ay长沙论坛
  6. 我是程序员,我比较喜欢有纪律的团队。
  7. 飞鸽传书是怎么就变成飞秋了的?
  8. ★_当第二次检测时我的65047777
  9. Html 进行DOM 操作(放缩,颜色...),HTML抓图(放缩,滚动,拼接)
  10. 3个月的SHELLCODE研究成果-一个最简单的Shellcode