Qt
大约 1 分钟
Qt
目录
对象树和拥有权
对象模型(对象树)
parent-child机制
作用
- 介绍Qt时提到一点:一定程度简化垃圾回收机制,就是这个 —— 对象树机制
- 这意味着类与类为包含关系时,被包含的类可以使用new方式声明而不用在析构中销毁
简概
- Qt中创建对象时会提供一个Parent对象指针
- 注意,对象树不等于继承树
原理
当创建一个
QObject
对象时,其构造函数接受一个QObject
指针作为参数,这个参数是parent
,也就是父对象指针
(不是父类)可以通过构造函数传入
父对象指针
,也可以后期通过setParent()
函数修改父对象指针
,一般为this这个QObject对象会自动添加到父对象的
children()
列表
当
父对象
析构时,这个列表中的所有对象也会被析构这种机制在GUI程序设计中相当有用
即:不需要delete QObject对象及其后代类
补充
- 这里的设计可能有点反直觉:父对象指针为参,但目的是要调用*parent里面的addChildren()??方法来修改的是父对象中的children()列表
- 之所以这样设计
- 一是方便于为组件指定的父对象(如控件所属哪个窗口)
- 二是以便与在构造QObject对象时完成所有操作(而不是把QObject对象传入到包含它的类的方法参数里)
- 三是将children放在父对象中,当销毁父对象的时候不需要遍历所有对象,就能直接找到要销毁的子对象