如何关闭和删除无模式的 qt 对话框

Posted

技术标签:

【中文标题】如何关闭和删除无模式的 qt 对话框【英文标题】:How close and delete a modeless qt dialog 【发布时间】:2013-12-10 10:24:38 【问题描述】:

我在一个类的方法中创建了一个无模式的 qdialog:

//Test.cpp

QDialogMaintenance *diag = new QDialogMaintenance(this);
diag->show();
diag->raise();
diag->activateWindow();

我只能通过单击对话框框架中的“X”图标来关闭对话框。如何删除 test.cpp 中的“诊断”实例?

【问题讨论】:

【参考方案1】:

您可以使用QWidget::setAttribute 并设置Qt::WA_DeleteOnClose 属性。

Makes Qt delete this widget when the widget has accepted the close event (see QWidget::closeEvent()).

diag->setAttribute(Qt::WA_DeleteOnClose);

【讨论】:

以上是关于如何关闭和删除无模式的 qt 对话框的主要内容,如果未能解决你的问题,请参考以下文章

QT模态对话框及非模态对话框

MFC如何在切换视图时关闭无模式对话框

如何“正确关闭 MFC 无模式对话框并修复资源泄漏”

QT笔记之模态对话框及非模态对话框

使用QT 4.7 - 对话框正忙着加载一件大事;如何禁用所有控件?

执行 GetParent() 时崩溃。关闭无模式对话框