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在QAppl
【Qt】重新认识QObject
最新推荐文章于 2024-07-15 10:01:15 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)