部分图文参考狄泰软件学院相关内容,并做相关拓展
1.QT对象间可以存在父子关系
(1)每一个对象都保存有它所有子对象的指针
(2)每一个对象都有一个指向其父对象的指针
2.当指定QT对象的父对象时
(1)其父对象会在对象链表中加入该对象的指针
(2)该对象会保存指向父对象的指针

3.当QT对象被销毁时
(1)将自己父对象的Chidrea_ List移除
(2)将自己的Children List中所有对象销毁
(3)利用QT对象间的父子关系可以构成对象树
(4)删除书中的节点会导致对应子树被销毁
注意:使用QT开发时,不仅要时刻注意内存泄漏的问题,还要时刻关注对象是否可能被多次销毁的问题

4.当使用布局管理器时
(1)任何容器类的组件都可以指定布局管理器
(2)同意个布局管理器中的举荐拥有相同的父组件
(3)设置布局管理器的同时,隐式的指定了父子关系

组件1和组件2,QLayout的父组件均为QWidget. 这里注意: 组件1和组件2的父组件是QWidget,而不是这里的QLayout.
总结:1、一般功能组件的父对象只能是一般容器类组件,而不能是布局管理器
2、布局管理器的父对象可以是一般容器类的组件或是布局管理器
3、容器类组件的子对象可以包含一般功能组件或布局管理器
4、布局管理器的子对象只能是布局管理器
布局管理器不是界面组件,而是界面部件的定位策略,所以不能容纳功能组件。但是可以包含或容纳其它布局管理器(定位策略).
容器 类组件可以理解为容器,可以容纳各种东西(组件或布局管理器)
相关示例

