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();
}
}