注意:在qt对象树中,父对象和子对象 != 父类和子类
一.对象树模型(以流程图解释)
分析上图:
-
关闭父对象window:此时父对象被析构,析构的时候会将子对象列表中的所有子对象进行析构,析构子对象的顺序是未定义的,不是按照先进先出原则的。 注意:子对象 != 子类 父子对象之间不一定有类的继承关系!不要将子对象理解成了子类。
-
删除子对象1label: 子对象析构的时候会发出一个信号destroyed,父对象收到这个信号之后就会从children列表中将它去除,这样处理之后,就不会出现重复析构子对象1的糟糕情况了(删除子对象2,子对象... 的原理同上)。