从Q开始关闭QDialog时调用析构函数

时间:2017-12-11 20:31:56

标签: c++ qt dialog

我创建了一个源自QDialog的自定义对话框。如果我关闭对话框,则不会调用析构函数。以下是我在课程test中打开对话框AWidget的方法。 testAWidget的成员:

//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;
}

1 个答案:

答案 0 :(得分:6)

如果您希望在关闭对话框后始终删除该对话框,则可以使用Qt::WA_DeleteOnClose

  

当小部件接受关闭时,Qt删除此小部件   event(参见QWidget :: closeEvent())。

//In AWidget:
test = new myDialog();
test->setAttribute (Qt::WA_DeleteOnClose);
test->show();
...