c++ - 关闭 QDialog 时调用析构函数从 Q 启动

标签 c++ qt dialog

我制作了一个派生自 QDialog 的自定义对话框。如果我关闭对话框,则不会调用析构函数。下面是我如何在类 AWidget 中打开对话框 testtestAWidget 的成员:

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

相关文章:

c++ - 如何在 Google Mock 中验证两个 char * 是否相等?

javascript - 对话框中的长度错误

javascript - 创建一个 jquery 对话框作为 API

c++ - 通过引用传递一个指向 long 的指针

C++ 模板显式实例化,模板参数是类模板

android - QML 虚拟键盘尺寸

python - 如何以智能方式将UDP客户端消息发送到UDP服务器解析消息

c++ - 在 Qt Valgrind Function Profiler 中跳过代码

c++ - 通过函数调用缩小 QDialog

c++ - "rvalue references for *this"有什么用?