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

Dan*_*904 1 c++ qt dialog

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

//In AWidget:
test = new myDialog();
test->show();
...
Run Code Online (Sandbox Code Playgroud)

如果我关闭此对话框,对话框test(当然?)不会被删除/销毁.

我必须在析构函数中执行以下操作AWidget:

Destructor of AWdiget:
delete test;
Run Code Online (Sandbox Code Playgroud)

myDialog消耗大量的内存.用户行为是打开一个myDialog,在其中工作,关闭它但是保持AWidget打开状态.

我如何myDialog test在关闭内存时调用内存/调用析构函数?

编辑

有没有比这更好的方法:

void myDiaglog::closeEvent(QCloseEvent* event){
delete this;
}
Run Code Online (Sandbox Code Playgroud)

Inn*_*sev 6

如果要在关闭对话框后始终删除对话框,可以使用Qt::WA_DeleteOnClose:

当小部件接受close事件时,Qt删除此小部件(请参阅QWidget :: closeEvent()).

//In AWidget:
test = new myDialog();
test->setAttribute (Qt::WA_DeleteOnClose);
test->show();
...
Run Code Online (Sandbox Code Playgroud)