结论:在Qt中创建对象时,QT使用对象树来组织和管理所有的QObject类和其子类的对象。任何对象树中的 QObject对象 delete 的时候,如果这个对象有 parent,则自动将其从 parent 的children()列表中删除;如果有孩子,则自动 delete 每一个孩子。Qt 保证没有QObject会被 delete 两次,这是由析构顺序决定的。
比如说上图中的例子。其中QObject是QWIdget的父类,QPushButton的“爷爷”类又是QWIdget,所以说创建QPushButton的实例,主需要关注创建,不用管回收,这里Qt帮我们代劳了。创建的步骤应该是QObject、QWIdget、QPushButton、QPushButton的对象。回收或者析构的时候顺序是QPushButton的对象、QWIdget、QObject。