Object Model
标准C++对象模型提供了非常有效的运行时的对象范例。但是他的静态属性在某些领域是不灵活的。图形用户界面的编程领域需要运行时的效率和高等级的灵活。Qt提供了这样能力,通过C++的效率与Qt Object Model的灵活性,达到这种效果。
Qt为C++增加了如下的特性:
1.通过信号与槽机制为对象提供了无缝交流;
2.可查询和可设计的object properties;
3.强大的事件以及事件过滤;
4.用于国际化的上下文字符串的转换;
5.复制精致的间隔驱动定时器,让事件驱动中的GUI能够更好的完成任务;
6.分层且可查询的object tree组织object ownership;
7.保护指针(QPointer)当对象被销毁的时候自动指向NULL,这个不同于C++的指针,C++的指针,当对象被消耗的时候就会产生指针悬挂问题;
8.跨平台的动态转化;
9.支持自定义类型的创建;
许多Qt的特性都是在标准C++技术创建的,基于QObject这个类。但The dynamic property system与信号与槽例外,他们需要Meta-object System,而元对象系统是Qt自己的元对象编译器提供的(moc);

meta-object系统是C++的扩展,这个meta-object系统使得C++语言更加适合GUI的编程。

Important Classes
这些类构成了Qt Object Model的基础。
1.QMetaClassInfo    关于QMeta相关类的附加信息;
2.QMetaEnum    关于枚举的Meta-data
3.QMetaObject    包含关于Qt objects的meta信息
4.QMetaProperty    关于Meta-data的性质
5.QMetaType    管理meta-object系统中的命名类型
6.QObject    这个是所有Qt对象的基类
7.QObjectCleanupHandler    观察多个QObject的生命周期
8.QPointer    模板类型,提供QObject的保护指针
9.QSignalBlocker    通过QObject::blockSignals()实现异常安全的包装
10.QSignalMapper    从可识别的发送者那绑定信号(可以实现那个对象发射的信号)
QVariant    最常见的Qt数据类型的集合

Qt Objects: Identity vs Value
上面列出了一些Qt object Model的附加特性,需要关注的是这个Qt objects他是那个类,而不是他里面的值,因为知道他是哪个类就可以知道他里面有啥值了!值是可以被拷贝或者重新分配的;identities是可以被克隆的,克隆就意味着创造了新的身份;并不是意味着和旧的一模一样的身份。举个例子,双胞胎都有2个不同的身份,他们虽然看起来一样,但他们有不同的名字,不同的社会地位,不同的社交圈。
克隆一个身份比拷贝一个数据的值更加的复杂。可以通过查看Qt Object Model来看这个对象的信息;

A Qt Object ...
1.有一个唯一的对象名QObject::objectName();
2.在对象树中有自己的位置;
3.能够连接其他的Qt能够连接其他的Qt Objects并且能发射信号和接收信号;
4.在运行时添加新的属性;

Qt的对象被视为一种标识,而不是值。

Qt文档阅读笔记-Object Model相关推荐

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

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

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

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

  3. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  4. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  5. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  6. Qt文档阅读笔记-Q_PROPERTY解析及实例

    目录 官方解析 博主栗子 官方解析 这个宏用于继承于QObject的类声明属性.这样声明后的属性行为与类数据成员一样,但是他们可以通过元对象系统进行访问. Q_PROPERTY(type name(R ...

  7. Qt文档阅读笔记-QWebEngineView及QML WebEngineView

    这里主要是最近有给Java Web项目及Qt项目需要混合,自己搞的QtWebEngine没有问题,而用了项目里面的,就有问题,在此阅读下官方资料,看看能不能解决这样莫名其妙的问题,在此记录下本次的阅读 ...

  8. Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)

    moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...

  9. Qt文档阅读笔记-Fortune Client Example实例解析

    目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...

最新文章

  1. stateflow中终止节点小记
  2. 接口向mapper传参数
  3. python列表删除多个相同元素_Python遍历列表删除多个元素或者重复元素
  4. 千万IOPS背后,宏杉科技“MS7000G2-Mach”为金融核心业务赋能
  5. 5-1MongoDB 实验——数据备份和恢复--edu上面的nosql题目
  6. 数据分析报告怎么写(四)
  7. 【判断一个数是不是素数】
  8. 因果推断 | 因果关系推断-系列电子书资源
  9. 最全 | 全国31个省市区重点产业布局
  10. Avro RPC的两种实现方法:静态实现和动态实现
  11. 白鹭引擎开发微信小游戏: API 调用教程文档
  12. vba批量复制工作表1并重命名
  13. 优先队列之堆排序((二)升级版)
  14. 基于Jsp+Servlet的户籍管理系统(JavaWeb毕业设计、课程设计)
  15. 生物发光及化学发光的原理及其应用
  16. 第九回(二):任侠厨子轻解厄围 夜半蹴鞠为泄忿闷[林大帅作品集]
  17. 华为手机打开图片很慢是怎么回事_华为手机打开相册反应慢
  18. 计算机wps素材,WPS Office 2012在线素材 让办公无需“步步惊心”
  19. Unity Emoji表情(图文混排)2022最详细教程
  20. 循环卷积和线性卷积以及快速卷积计算

热门文章

  1. 新手编程:程序员 5 种编程入门方法,快速学会一门编程语言!
  2. 产品经理有话说!这个报表神器更新了6大功能,绝对亮眼
  3. 7个理由,给你推荐这款“秒杀Excel”的分析神器!
  4. C++实现的队列queue
  5. 想加入IT行业为何建议你学Python,学完真值!
  6. 程序员不可能实现的6个愿望
  7. 除了写代码,程序员必备的6种软技能
  8. r语言 xmlto html,使用R语言将XML转换为CSV(示例代码)
  9. mac php编译freetype,Mac下本机自带PHP缺少freetype最终解决方案
  10. h5点击后字体加粗出现下边框_人力资源管理论文格式(字体+版式+打印)