引用第5楼paranoid于2010-08-19 11:25发表的 :
QObject中有两个重要的成员负责组织起整个家族链,parent,它保存着此QObject父亲的指针,children,它是一个列表,包含此QObject的所有孩子的指针。
new一个QObject的时候如果指定了父亲,就会使自己的parent指向父亲,父亲的children中包含自己;
而当一个QObject将要被delete时,它会先通过children找到自己所有的孩子,并逐一delete;然后通过parent查看自己是否有父亲,如果有,则将自己从父亲的children列表中删除;
这样问题就很清楚了,不指定父亲的 new QObject不会被自动delete;指定了父亲则当父亲被delete时自动被delete,并且这跟他是不是成员变量没有关系,因为这种父子关系是保存在QObject类中的,只要是QObject的子类都会遵循这一原则。
