我创建了一个源自QDialog的自定义对话框。如果我关闭对话框,则不会调用析构函数。以下是我在课程test
中打开对话框AWidget
的方法。 test
是AWidget
的成员:
//In AWidget:
test = new myDialog();
test->show();
...
如果我关闭此对话框,对话框test
(当然?)不会被删除/销毁。
我必须在AWidget
:
Destructor of AWdiget:
delete test;
myDialog
消耗大量内存。用户行为是打开myDialog
,在其中工作,关闭它但保持AWidget
打开。
如何关闭内存/关闭它时调用myDialog test
的析构函数?
修改
是否有更好的方式:
void myDiaglog::closeEvent(QCloseEvent* event){
delete this;
}
答案 0 :(得分:6)
如果您希望在关闭对话框后始终删除该对话框,则可以使用Qt::WA_DeleteOnClose
:
当小部件接受关闭时,Qt删除此小部件 event(参见QWidget :: closeEvent())。
//In AWidget:
test = new myDialog();
test->setAttribute (Qt::WA_DeleteOnClose);
test->show();
...