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