10

ユーザーがプログラムをキャンセルまたは保存するかどうかに関係なく、Qt でプログラムを閉じる前にダイアログを表示したい。つまり、キャンセルをクリックすると、ユーザーは Windows ペイントのようにクリーンアップされていない状態でプログラムに戻る可能性があります。閉じる前にダイアログが表示され、ユーザーに警告しますか? ちなみに私はQtを使っています

4

2 に答える 2

16

アプリケーションがQMainWindowを使用している場合、 をオーバーロードしてダイアログを表示し、ユーザーがダイアログで [ OK ] をクリックした場合にcloseEvent()のみ呼び出します。QMainWindow::closeEvent

アプリケーションがQDialogを使用している場合は、スロットをオーバーロードし、ユーザーがダイアログで [ OK ] をクリックした場合に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 に答える