我听说小部件应该在堆上分配(使用new),然后就不需要删除它们(它是自动完成的)。
我不确定这是否重要,但我创建的所有小部件都有父母。
This说:
如果parent为0,则新窗口小部件变为 一个窗口。如果父是另一个小部件, 这个小部件成为子窗口 在父母内部。新的小部件是 删除其父项时删除。
答案 0 :(得分:21)
没有任何魔法。简单地说,QObject会在析构函数中自动删除它的子节点。因此,只要您的窗口小部件具有父窗口并且您销毁该父窗口,您就不必担心这些子窗口。所以如果你想知道那个QObject * parent
参数是什么,那就是它的用途。
另外,来自doc:
删除所有子对象。如果这些对象中的任何一个在堆栈或全局上,则程序迟早会崩溃。
因此,避免向父母提供堆栈分配的对象。
答案 1 :(得分:3)