【发布时间】:2012-10-29 20:46:56
【问题描述】:
我想在 Qt 中关闭程序之前显示对话框,无论用户是要取消还是保存程序,即通过单击取消,用户有机会以未清理状态返回程序,例如 windows 绘图或记事本关闭前的感知对话框会提醒用户哪些? 顺便说一句,我使用 Qt
【问题讨论】:
我想在 Qt 中关闭程序之前显示对话框,无论用户是要取消还是保存程序,即通过单击取消,用户有机会以未清理状态返回程序,例如 windows 绘图或记事本关闭前的感知对话框会提醒用户哪些? 顺便说一句,我使用 Qt
【问题讨论】:
如果您的应用程序使用 QMainWindow,请重载 closeEvent() 以显示对话框,并且仅在用户单击 ok 时调用 QMainWindow::closeEvent在您的对话框中。
如果您的应用程序使用 QDialog,请重载 accept() 插槽,并且仅当用户在您的对话框。
【讨论】:
QMainWindow::closeEvent() 不足以阻止窗口关闭:您还需要调用 event->ignore(),如下所述: doc.qt.io/qt-5/qwidget.html#closeEvent
您可以使用此处描述的解决方案:https://web.archive.org/web/20170716164107/http://www.codeprogress.com/cpp/libraries/qt/HandlingQCloseEvent.php
您可以通过以下方式简单地覆盖 closeEvent 函数:
#include <QCloseEvent>
#include <QMessageBox>
void MainWindow::closeEvent(QCloseEvent *event) // show prompt when user wants to close app
{
event->ignore();
if (QMessageBox::Yes == QMessageBox::question(this, "Close Confirmation", "Exit?", QMessageBox::Yes | QMessageBox::No))
{
event->accept();
}
}
【讨论】: