1. ホーム
  2. c++

[解決済み] QMessageBoxを使ったYes/Noメッセージボックス

2022-07-29 05:04:33

質問

QtでYes/Noボタン付きのメッセージボックスを表示する方法と、どちらが押されたかを確認する方法は?

すなわち、次のようなメッセージボックスです。

どのように解決するのですか?

あなたは QMessageBox::question を使います。

仮想的なウィジェットのスロットでの例。

#include <QApplication>
#include <QMessageBox>
#include <QDebug>

// ...

void MyWidget::someSlot() {
  QMessageBox::StandardButton reply;
  reply = QMessageBox::question(this, "Test", "Quit?",
                                QMessageBox::Yes|QMessageBox::No);
  if (reply == QMessageBox::Yes) {
    qDebug() << "Yes was clicked";
    QApplication::quit();
  } else {
    qDebug() << "Yes was *not* clicked";
  }
}

Qt 4 と 5 で動作する必要があり、そのためには QT += widgets が必要で、Qt 5 では CONFIG += console を見るために Win32 では qDebug() が出力されます。

を参照してください。 StandardButton enum を参照して、使用可能なボタンのリストを取得してください。追加引数でデフォルトのボタンを設定することができます (Qt " は自動的に適切なデフォルトを選択します を指定しない場合、あるいは QMessageBox::NoButton ).