ユーザーが「X」(閉じる)ボタンを押したイベントをどのように処理しますか? 質問する

ユーザーが「X」(閉じる)ボタンを押したイベントをどのように処理しますか? 質問する

Qt では、ユーザーがウィンドウ フレームの 'X' (閉じる) ボタン、つまりこのボタンをクリックするイベントに対応するスロットは何ですか。

ウィンドウの閉じるボタン

このためのスロットがない場合、ユーザーが閉じるボタンを押した後に関数をトリガーする他の方法はありますか?

ベストアンサー1

がある場合は、メソッドQMainWindowをオーバーライドできますcloseEvent

#include <QCloseEvent>
void MainWindow::closeEvent (QCloseEvent *event)
{
    QMessageBox::StandardButton resBtn = QMessageBox::question( this, APP_NAME,
                                                                tr("Are you sure?\n"),
                                                                QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
                                                                QMessageBox::Yes);
    if (resBtn != QMessageBox::Yes) {
        event->ignore();
    } else {
        event->accept();
    }
}


をサブクラス化する場合QDialog、 はcloseEvent呼び出されないので、 をオーバーライドする必要がありますreject()

void MyDialog::reject()
{
    QMessageBox::StandardButton resBtn = QMessageBox::Yes;
    if (changes) {
        resBtn = QMessageBox::question( this, APP_NAME,
                                        tr("Are you sure?\n"),
                                        QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
                                        QMessageBox::Yes);
    }
    if (resBtn == QMessageBox::Yes) {
        QDialog::reject();
    }
}

おすすめ記事