10

我想在关闭程序之前在 Qt 中显示对话框,无论用户是要取消还是保存程序,即通过单击取消,用户有机会返回到未清理状态的程序,如 Windows 绘图或记事本,其中有意识关闭前的对话框出现警告用户?顺便说一句,我使用 Qt

4

2 回答 2

16

如果您的应用程序使用QMainWindow,请重载closeEvent()以显示对话框,并且仅QMainWindow::closeEvent在用户在对话框中单击“确定”时才调用。

如果您的应用程序使用QDialog,请重载accept()插槽,并且仅在用户在对话框中QDialog::accept单击“确定”时才调用。

于 2012-10-29T20:53:17.123 回答
7

您可以使用此处描述的解决方案: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();
    }

}
于 2016-08-11T10:53:57.793 回答