我制作了一个派生自 QDialog 的自定义对话框。如果我关闭对话框,则不会调用析构函数。下面是我如何在类 AWidget
中打开对话框 test
。 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;
}
最佳答案
如果你想在对话框关闭后总是删除它你可以使用Qt::WA_DeleteOnClose
:
Makes Qt delete this widget when the widget has accepted the close event (see QWidget::closeEvent()).
//In AWidget:
test = new myDialog();
test->setAttribute (Qt::WA_DeleteOnClose);
test->show();
...
关于c++ - 关闭 QDialog 时调用析构函数从 Q 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47760937/