【问题标题】:show a dialog before closing the program in Qt在 Qt 中关闭程序之前显示一个对话框
【发布时间】:2012-10-29 20:46:56
【问题描述】:

我想在 Qt 中关闭程序之前显示对话框,无论用户是要取消还是保存程序,即通过单击取消,用户有机会以未清理状态返回程序,例如 windows 绘图或记事本关闭前的感知对话框会提醒用户哪些? 顺便说一句,我使用 Qt

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

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

    如果您的应用程序使用 QDialog,请重载 accept() 插槽,并且仅当用户在您的对话框。

    【讨论】:

    • 我不确定 Qt4 中有什么,但在 Qt5 中,仅仅不调用 QMainWindow::closeEvent() 不足以阻止窗口关闭:您还需要调用 event->ignore(),如下所述: doc.qt.io/qt-5/qwidget.html#closeEvent
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-11-11
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-25
      相关资源
      最近更新 更多