1、QObject父子对象的是设计模式中组合模式的实现。父对象和基对象不是一个概念,前者是在运行时管理子对象,是动态的,后者是在编译时判定派生关系,是静态的。
2、每个QObject至多有一个父对象,父对象中将子对象的指针放在QObjectList列表中来管理。在父对象的析构函数中会自动销毁子对象,因此有父对象的QObject应该new出来放到堆区(heap),没有父对象的QObject最好放到栈区,这样在超出作用域时,会自动销毁。如果有父对象的QObject在栈上创建,就会销毁两次。
3、不允许复制QObject,源码中有Q_DISABLE_COPY(QObject),其实就是将复制构造函数和赋值构造函数设置为private私有类型。因此QObject不能值传递,它不是值类型(带有公关默认构造、复制、赋值构造函数可以视为值类型)。
4、QObject之间可以使用信号和槽传递消息,底层依赖事件循环,这种设计模式称为观察者模式。
5、注意:在实现多继承时,要确保QObject是基类列表中的第一个基类,基类列表有且只有这一个是QObject。这是由moc编译器限制的。
6、确保每一个QObject在QApplication之后创建,在QApplication销毁前销毁。而在静态存储区定义的对象是在main()返回后才销毁,因此不能定义静态存储类型的QObject。
7、推荐使用QObject::deleteLater来删除QObject,但是也会因为延迟销毁对象,造成内存不会及时释放,占用大量内存。
8、信号和槽、元对象、元属性、元方法需要Q_OBJECT和元对象编辑器moc支持。

【Qt】重新认识QObject相关推荐

  1. Qt总结之二十二:Qt控件QObject

    简述 元对象系统(Meta-Object System)提供了信号与槽机制,可用于对象间通信.运行时类别信息和动态属性系统. 元对象系统基于三个方面: QObject类:为objects提供了一个可以 ...

  2. Qt笔记-解决QObject::startTimer: Timers cannot be started from another thread

    原因是QTime或QTImeLine这类,多线程中创建和调用要在一个线程中. 因为构造函数在main线程中创建的,run是子线程中,所有,这部分代码的new要在run中去new就可以了.

  3. Qt QObject::connect: Parentheses expected错误原因

    Qt 运行提示 QObject::connect: Parentheses expected, signal QUdpSocket::readyRead in -\terminal\net103.cp ...

  4. QT:QObject 简单介绍

    QObject 是所有Qt对象的基类. QObject 是Qt模块的核心.它的最主要特征是关于对象间无缝通信的机制:信号与槽. 使用connect()建立信号到槽的连接,使用disconnect()销 ...

  5. 【QT】QObject简介

    1.简介 QObject类是所有Qt对象的基类,是Qt对象模型的核心,这个模型的主要特征为信号与槽,信号与槽是一个非常重要的机制,用于对象间的通信.连接信号与槽使用connect()函数,断开连接使用 ...

  6. Qt线程、事件与QObject

    线程.事件与QObject 敬告:测试版本 原文连接:http://m.blog.csdn.net/blog/shang322/9344475# 本译文接近定稿,但还须一些加工和更好的例子.欢迎任何评 ...

  7. Qt源码分析之QObject

    Qt的QObject 1.试验代码: #include <QApplication> #include <QtCore> #include <QtGui> int ...

  8. QT 实用代码片段 (持续更新)

    由于项目需要开始转型学习C++,GUI使用QT进行开发,开发过程中踩了不少坑,但是也积累了些宝贵经验,在这儿记录一下,希望能帮到需要的朋友. 1.设置无边框对话框 //设置对话框属性 setWindo ...

  9. 0.QObject的数据存储

    一.QObject概述 QObject类是QT的核心,大部分QT类都是从这个类直接或者间接继承而来.包含QT的信号槽机制和事件机制 QObject通过对象树将对象组织起来,当使用QObject创建一个 ...

  10. c++ qt工作量和移动端相比_学习笔记 --- QT

    0.前序 别问,问就是选修... 那毕竟3dMax动画那边结课了,我怎么就不能再发一篇笔记(极其嚣张) QT其实会去好好学的,虽然最近为了选修结课又得恶补一波 不过以后给策划造编辑器是要用的,这篇笔记 ...

最新文章

  1. main线程 子线程 顺序_面试官:线程池如何按照core、max、queue的执行顺序去执行?详解...
  2. 【LeetCode】1. 盛最多水的容器:C#三种解法
  3. LeetCode 158. 用 Read4 读取 N 个字符 II
  4. ECCV 2020 | 图匠数据、华中师范提出低质退化文本识别算法PlugNet
  5. hdoj 3018 Ant Trip(无向图欧拉路||一笔画+并查集)
  6. 新概念英语(1-95)Tickets,please!
  7. 【Daily】IE弹窗SQL分割字符串
  8. 【python】速查手册(基础笔记) - 人生苦短,我用python
  9. ul1581标准_UL 1581电线电缆燃烧试验
  10. [每日一氵]笔记本电脑充电后卡得一批
  11. 初识JAVA:华为面试写一个程序:要求出用1,2,5这三个数不同个数组合的和为100的组合个数
  12. 深度学习100问之深入理解Vanishing/Exploding Gradient(梯度消失/爆炸)
  13. 【SSLGZ 1614】医院设置(Dijkstra)
  14. Kettle 8.2 打开spoon.bat后闪退的解决办法
  15. HTML好看个人主页展示开源源码
  16. 【玩转嵌入式屏幕显示】(五)TFT-LCD屏幕显示图片
  17. 迅雷调用potplayer
  18. 以微信为例,聊聊在内容推荐上AI的一些应用实践
  19. 生物信息百Jia软件(二十):lumpy
  20. 2021-02-25 Python人工智能(自学之路)分享(一)

热门文章

  1. 基于锁相环的调制解调仿真实现
  2. OpenCV(25)轮廓检测(轮廓提取、属性、近似轮廓、外接矩形和外接圆)
  3. 加州大学戴维斯分校 计算机科学,加州大学戴维斯分校的计算机专业如何?
  4. 张正友相机标定代码(c++python)
  5. 实验四 定位与导航算法
  6. CentOS 6.3 64bit上升级系统默认Python 2.6.6到2.7.10版本
  7. 在Ubuntu 14.04 64bit上安装百度云Linux客户端BCloud
  8. 虚幻引擎5(UE5)实时VFX游戏特效制作入门到精通
  9. 3G重选至4G--基于优先级
  10. Gym - 102082G