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