このページでは

QMessageBox Class

QMessageBox クラスは、ユーザーに情報を通知したり、質問をして回答を受け取ったりするためのモーダルダイアログを提供します。詳細...

ヘッダー: #include <QMessageBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QDialog

パブリック型

enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
enum Icon { NoIcon, Question, Information, Warning, Critical }
(since 6.6) enum class Option { DontUseNativeDialog }
flags Options
enum StandardButton { Ok, Open, Save, Cancel, Close, …, ButtonMask }
flags StandardButtons

プロパティ

パブリック関数

QMessageBox(QWidget *parent = nullptr)
QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)
virtual ~QMessageBox()
void addButton(QAbstractButton *button, QMessageBox::ButtonRole role)
QPushButton *addButton(QMessageBox::StandardButton button)
QPushButton *addButton(const QString &text, QMessageBox::ButtonRole role)
QAbstractButton *button(QMessageBox::StandardButton which) const
QMessageBox::ButtonRole buttonRole(QAbstractButton *button) const
QList<QAbstractButton *> buttons() const
QCheckBox *checkBox() const
QAbstractButton *clickedButton() const
QPushButton *defaultButton() const
QString detailedText() const
QAbstractButton *escapeButton() const
QMessageBox::Icon icon() const
QPixmap iconPixmap() const
QString informativeText() const
void open(QObject *receiver, const char *member)
QMessageBox::Options options() const
void removeButton(QAbstractButton *button)
void setCheckBox(QCheckBox *cb)
void setDefaultButton(QMessageBox::StandardButton button)
void setDefaultButton(QPushButton *button)
void setDetailedText(const QString &text)
void setEscapeButton(QAbstractButton *button)
void setEscapeButton(QMessageBox::StandardButton button)
void setIcon(QMessageBox::Icon)
void setIconPixmap(const QPixmap &pixmap)
void setInformativeText(const QString &text)
(since 6.6) void setOption(QMessageBox::Option option, bool on = true)
void setOptions(QMessageBox::Options options)
void setStandardButtons(QMessageBox::StandardButtons buttons)
void setText(const QString &text)
void setTextFormat(Qt::TextFormat format)
void setTextInteractionFlags(Qt::TextInteractionFlags flags)
void setWindowModality(Qt::WindowModality windowModality)
void setWindowTitle(const QString &title)
QMessageBox::StandardButton standardButton(QAbstractButton *button) const
QMessageBox::StandardButtons standardButtons() const
(since 6.6) bool testOption(QMessageBox::Option option) const
QString text() const
Qt::TextFormat textFormat() const
Qt::TextInteractionFlags textInteractionFlags() const

パブリックスロット

virtual int exec() override

シグナル

void buttonClicked(QAbstractButton *button)

静的パブリックメンバー

void about(QWidget *parent, const QString &title, const QString &text)
void aboutQt(QWidget *parent, const QString &title = QString())
QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)
QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

再実装された保護関数

virtual void changeEvent(QEvent *ev) override
virtual void closeEvent(QCloseEvent *e) override
virtual bool event(QEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void showEvent(QShowEvent *e) override

マクロ

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

詳細な説明

メッセージボックスは、状況についてユーザーに警告するためのプライマリtext 、状況をさらに説明するためのinformative text 、およびユーザーの要求に応じてさらに詳細なデータを提供するためのオプションのdetailed text を表示します。

また、メッセージボックスは、ユーザーの応答を受け付けるためのicon およびstandard buttons を表示することもできます。

parent パラメータはオプションですが、これを指定することでウィンドウマネージャにヒントが与えられ、ウィンドウマネージャがダイアログウィンドウの位置決めや適切な重ね順の維持を行うことができます。

QMessageBox を使用するための API として、プロパティベースの API と静的関数の 2 つが用意されています。静的関数のいずれかを呼び出す方が簡単な方法ですが、プロパティベースの API を使用する場合に比べて柔軟性が低く、得られる情報も乏しくなります。プロパティベースの API を使用することをお勧めします。

プロパティベースのAPI

プロパティベースのAPIを使用するには、QMessageBoxのインスタンスを構築し、必要なプロパティを設定してから、exec()を呼び出してメッセージを表示します。最も単純な設定は、message text プロパティのみを設定することです。

QMessageBox msgBox(this);
msgBox.setText("The document has been modified.");
msgBox.exec();

ユーザーは、メッセージボックスを閉じるにはOK ボタンをクリックする必要があります。メッセージボックスが閉じられるまで、GUIの他の部分はブロックされます。

簡単なメッセージと「OK」ボタンが表示されたメッセージボックス

単にイベントをユーザーに通知するだけでなく、そのイベントに対してどう対処すべきかをユーザーに尋ねる方が、より良いアプローチです。

standard buttons プロパティを、ユーザーの応答として用意したいボタンのセットに設定します。ボタンは、StandardButtons の値をビット単位のOR演算子で組み合わせることで指定します。ボタンの表示順序はプラットフォームによって異なります。たとえば、Windowsでは「Save 」が「Cancel 」の左側に表示されますが、macOSでは順序が逆になります。標準ボタンの1つを「default button 」として指定してください。

informative text プロパティを使用すると、ユーザーが適切なアクションを選択できるよう、追加のコンテキスト情報を提供できます。

QMessageBox msgBox(this);
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Save);
int ret = msgBox.exec();

「保存」、「保存しない」、「キャンセル」のボタンがあるメッセージボックス

exec() スロットは、クリックされたボタンの `StandardButtons ` 値を返します。

switch (ret) {
    case QMessageBox::Save:
        // Save was clicked
        break;
    case QMessageBox::Discard:
        // Don't Save was clicked
        break;
    case QMessageBox::Cancel:
        // Cancel was clicked
        break;
    default:
        // should never be reached
        break;
}

ユーザーが適切なアクションを選択できるよう、より多くの情報を提供するには、detailed text プロパティを設定します。プラットフォームによっては、detailed text を表示するために、ユーザーがShow Details... ボタンをクリックする必要がある場合があります。

「詳細を表示...」ボタン付きのメッセージボックスを保存する

Show Details... ボタンをクリックすると、詳細テキストが表示されます。

詳細なテキストが表示された「保存」メッセージボックス

リッチテキストと Text Format プロパティ

detailed text プロパティは常にプレーンテキストとして解釈されます。main text およびinformative text プロパティは、プレーンテキストまたはリッチテキストのいずれかになります。これらの文字列は、text format プロパティの設定に従って解釈されます。デフォルト設定はauto-text です。

なお、XMLメタ文字を含む一部のプレーンテキスト文字列では、自動テキスト変換(rich text detection test )が失敗し、プレーンテキスト文字列がリッチテキストとして誤って解釈される場合があります。このような稀なケースでは、Qt::convertFromPlainText() を使用してプレーンテキスト文字列を視覚的に同等のリッチテキスト文字列に変換するか、text format プロパティをsetTextFormat() で明示的に設定してください。

重大度レベルと Icon および Pixmap プロパティ

QMessageBox は、4 つの定義済みメッセージの重大度レベル(メッセージタイプ)をサポートしています。これらは、それぞれ表示される定義済みアイコンが異なる点のみが実質的な違いです。icon プロパティをpredefined icons のいずれかに設定することで、4 つの定義済みメッセージタイプのいずれかを指定します。以下のルールはガイドラインです:

疑問符のアイコン

Question通常の動作中に質問を行う場合。

情報アイコン

Information通常の動作に関する情報を報告する場合。

警告アイコン

Warning重大ではないエラーを報告する場合。

重大な問題を示すアイコン

Critical重大なエラーを報告する場合。

Predefined icons は QMessageBox によって定義されるものではなく、スタイルによって提供されるものです。 デフォルト値はNo Icon です。それ以外については、すべてのケースでメッセージボックスは同じです。標準アイコンを使用する場合は、表で推奨されているものを使用するか、お使いのプラットフォームのスタイルガイドラインで推奨されているものを使用してください。標準アイコンのいずれもメッセージボックスに適していない場合は、icon プロパティを設定する代わりに、icon pixmap プロパティを設定してカスタムアイコンを使用することができます。

要約すると、アイコンを設定するには、標準アイコンの場合は` setIcon()` を、カスタムアイコンの場合は` setIconPixmap()`を使用します。

静的関数 API

静的関数 API を使用してメッセージボックスを作成するのは便利ですが、静的関数のシグネチャには `informative text ` および `detailed text ` プロパティを設定するためのパラメータがないため、プロパティベースの API を使用する場合に比べて柔軟性に欠けます。この問題に対する回避策の一つとして、`title ` パラメータをメッセージボックスのメインテキストとして、`text ` パラメータをメッセージボックスの説明テキストとして使用する方法があります。 これには、メッセージボックスの可読性が低下するという明らかな欠点があるため、プラットフォームのガイドラインでは推奨されていません。Microsoft Windows ユーザーインターフェイスガイドラインでは、`application name ` を `window's title` として使用することを推奨しています。つまり、メインテキストに加えて補足テキストがある場合は、それを `text ` パラメータに連結する必要があります。

なお、静的関数のシグネチャは、ボタンパラメータに関して変更されています。これらは現在、standard buttons およびdefault button を設定するために使用されます。

information()、question()、warning()、およびcritical() メッセージボックスを作成するための静的関数が利用可能です。

int ret = QMessageBox::warning(this, tr("My Application"),
                               tr("The document has been modified.\n"
                                  "Do you want to save your changes?"),
                               QMessageBox::Save | QMessageBox::Discard
                               | QMessageBox::Cancel,
                               QMessageBox::Save);

「Standard Dialogs」のサンプルでは、QMessageBox やその他の組み込み Qt ダイアログの使用方法を示しています。

高度な使用法

standard buttons がメッセージボックスの要件に対して柔軟性に欠ける場合は、テキストとButtonRole を受け取るaddButton()のオーバーロードを使用して、カスタムボタンを追加できます。ButtonRole は、QMessageBoxが画面上のボタンの順序を決定するために使用されます(この順序はプラットフォームによって異なります)。exec()を呼び出した後、clickedButton()の値をテストできます。例えば、

QMessageBox msgBox(this);
QPushButton *connectButton = msgBox.addButton(tr("Connect"), QMessageBox::ActionRole);
QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);

msgBox.exec();

if (msgBox.clickedButton() == connectButton) {
    // connect
} else if (msgBox.clickedButton() == abortButton) {
    // abort
}

デフォルトボタンとエスケープキー

デフォルトボタン(つまり、Enter が押されたときにアクティブになるボタン)は、setDefaultButton() を使用して指定できます。デフォルトボタンが指定されていない場合、QMessageBoxはメッセージボックスで使用されるボタンのbutton roles に基づいてデフォルトボタンを特定しようとします。

エスケープボタン(Esc が押されたときにアクティブになるボタン)は、setEscapeButton() を使用して指定できます。エスケープボタンが指定されていない場合、QMessageBox は以下のルールに従ってエスケープボタンを特定しようとします。

  1. ボタンが1つしかない場合、Esc が押されたときにアクティブになるボタンがエスケープボタンとなります。
  2. Cancel ボタンが存在する場合は、Esc が押されたときにアクティブになるボタンとなります。
  3. the Reject role またはthe No role のいずれかのラベルが付いたボタンがちょうど1つある場合、Esc が押されたときにアクティブになるボタンがエスケープボタンとなります。

これらのルールではエスケープボタンを特定できない場合、Esc を押しても何の効果もありません。

「 QDialogButtonBox 」 および「標準ダイアログの例」も参照してください 。

メンバ型のドキュメント

enum QMessageBox::ButtonRole

この列挙型は、ボタンボックス内のボタンを記述するために使用できる役割を表しています。これらの役割の組み合わせは、ボタンの動作のさまざまな側面を記述するためのフラグとして機能します。

定数値説明
QMessageBox::InvalidRole-1ボタンが無効です。
QMessageBox::AcceptRole0このボタンをクリックすると、ダイアログが承認されます(例:OK)。
QMessageBox::RejectRole1このボタンをクリックすると、ダイアログが拒否されます(例:[キャンセル])。
QMessageBox::DestructiveRole2このボタンをクリックすると、破壊的な変更(例:変更の破棄)が行われ、ダイアログが閉じられます。
QMessageBox::ActionRole3このボタンをクリックすると、ダイアログ内の要素に変更が加わります。
QMessageBox::HelpRole4このボタンをクリックすると、ヘルプを要求できます。
QMessageBox::YesRole5このボタンは「はい」のようなボタンです。
QMessageBox::NoRole6このボタンは「いいえ」のようなボタンです。
QMessageBox::ApplyRole8このボタンをクリックすると、現在の変更が適用されます。
QMessageBox::ResetRole7このボタンをクリックすると、ダイアログのフィールドがデフォルト値にリセットされます。

StandardButtonも参照してください 。

enum QMessageBox::Icon

この列挙型には、以下の値があります:

定数値説明
QMessageBox::NoIcon0メッセージボックスにアイコンがありません。
QMessageBox::Question4メッセージが質問であることを示すアイコン。
QMessageBox::Information1メッセージが特に異常ではないことを示すアイコン。
QMessageBox::Warning2メッセージが警告であるが、対処可能であることを示すアイコン。
QMessageBox::Critical3そのメッセージが重大な問題であることを示すアイコン。

[since 6.6] enum class QMessageBox::Option
flags QMessageBox::Options

定数値説明
QMessageBox::Option::DontUseNativeDialog0x00000001ネイティブのメッセージダイアログは使用しないでください。

この列挙型は Qt 6.6 で導入されました。

Options 型は、QFlags<Option> の typedef です。Option 値の OR 組み合わせを格納します。

enum QMessageBox::StandardButton
flags QMessageBox::StandardButtons

これらの列挙型は、標準ボタンのフラグを表しています。各ボタンには、ButtonRole が定義されています。

定数値説明
QMessageBox::Ok0x00000400AcceptRole で定義された「OK」ボタン。
QMessageBox::Open0x00002000AcceptRole で定義された「Open」ボタン。
QMessageBox::Save0x00000800AcceptRole で定義された「保存」ボタン。
QMessageBox::Cancel0x00400000RejectRole で定義された「Cancel」ボタン。
QMessageBox::Close0x00200000RejectRole で定義された「閉じる」ボタン。
QMessageBox::Discard0x00800000プラットフォームに応じて、「破棄」または「保存しない」ボタン。DestructiveRole で定義されます。
QMessageBox::Apply0x02000000ApplyRole で定義された「適用」ボタン。
QMessageBox::Reset0x04000000ResetRole で定義された「リセット」ボタン。
QMessageBox::RestoreDefaults0x08000000ResetRole で定義された「デフォルトに戻す」ボタン。
QMessageBox::Help0x01000000HelpRole で定義された「ヘルプ」ボタン。
QMessageBox::SaveAll0x00001000AcceptRole で定義された「すべて保存」ボタン。
QMessageBox::Yes0x00004000YesRole で定義された「はい」ボタン。
QMessageBox::YesToAll0x00008000YesRole で定義された「すべてに『はい』」ボタン。
QMessageBox::No0x00010000NoRole で定義された「No」ボタン。
QMessageBox::NoToAll0x00020000NoRole で定義された「すべてに『いいえ』」ボタン。
QMessageBox::Abort0x00040000RejectRole で定義された「Abort」ボタン。
QMessageBox::Retry0x00080000AcceptRole で定義された「再試行」ボタン。
QMessageBox::Ignore0x00100000AcceptRole で定義された「無視」ボタン。
QMessageBox::NoButton0x00000000無効なボタン。

以下の値は非推奨です:

定数値説明
QMessageBox::YesAllYesToAll代わりに YesToAll を使用してください。
QMessageBox::NoAllNoToAll代わりに NoToAll を使用してください。
QMessageBox::Default0x00000100代わりに、information()、warning() などのdefaultButton 引数を使用するか、setDefaultButton() を呼び出してください。
QMessageBox::Escape0x00000200代わりにsetEscapeButton() を呼び出してください。
QMessageBox::FlagMask0x00000300 
QMessageBox::ButtonMask~FlagMask 

StandardButtons 型は、QFlags<StandardButton> の typedef です。これは、StandardButton 値の論理和(OR)の組み合わせを格納します。

ButtonRole およびstandardButtonsも参照してください 。

プロパティのドキュメント

detailedText : QString

このプロパティには、詳細エリアに表示されるテキストが格納されます。

このテキストはプレーンテキストとして解釈されます。

デフォルトでは、このプロパティには空の文字列が設定されています。

アクセス関数:

QString detailedText() const
void setDetailedText(const QString &text)

関連項目: QMessageBox::text およびQMessageBox::informativeText 。

icon : Icon

このプロパティは、メッセージボックスのアイコンを保持します

メッセージボックスのアイコンは、以下のいずれかの値で指定できます。

デフォルトは `QMessageBox::NoIcon` です。

実際のアイコンの表示に使用されるピクマップは、現在のGUI style によって決まります。また、icon pixmap プロパティを設定することで、アイコン用にカスタムピクマップを設定することもできます。

関連関数:

QMessageBox::Icon icon() const
void setIcon(QMessageBox::Icon)

「iconPixmap」も参照してください 。

iconPixmap : QPixmap

このプロパティには、現在のアイコンが格納されます

メッセージボックスで現在使用されているアイコンです。すべてのGUIスタイルで適切に見えるピクマップを1つ作成するのは難しい場合が多いため、プラットフォームごとに異なるピクマップを指定することをお勧めします。

デフォルトでは、このプロパティは未定義です。

アクセス関数:

QPixmap iconPixmap() const
void setIconPixmap(const QPixmap &pixmap)

iconも参照してください 。

informativeText : QString

このプロパティには、メッセージについてより詳しい説明を提供する説明文が格納されます

説明テキストは、text() を補足して、ユーザーにより多くの情報を提供するために使用できます。例えば、その状況がもたらす結果の説明や、代替案の提案などが挙げられます。

このテキストは、テキスト形式の設定 (QMessageBox::textFormat) に応じて、プレーンテキストまたはリッチテキストとして解釈されます。デフォルト設定はQt::AutoText であり、メッセージボックスはテキストの形式を自動検出しようとします。

デフォルトでは、このプロパティには空の文字列が格納されます。

アクセス関数:

QString informativeText() const
void setInformativeText(const QString &text)

関連項目: textFormat 、QMessageBox::text 、およびQMessageBox::detailedText 。

[since 6.6] options : Options

ダイアログの見た目や操作感に影響するオプションです。

デフォルトでは、これらのオプションは無効になっています。

ダイアログのプロパティを変更したり、ダイアログを表示したりする前に、Option::DontUseNativeDialog オプションを設定する必要があります。

ダイアログが表示されている間にオプションを設定しても、ダイアログに即座に反映されるとは限りません。

他のプロパティを変更した後にオプションを設定すると、これらの値が反映されない場合があります。

この列挙型は Qt 6.6 で導入されました。

アクセス関数:

QMessageBox::Options options() const
void setOptions(QMessageBox::Options options)

setOption() およびtestOption()も参照してください 。

standardButtons : StandardButtons

メッセージボックスの標準ボタンの一覧

このプロパティは、メッセージボックスで使用される標準ボタンを制御します。

デフォルトでは、このプロパティには標準ボタンが含まれていません。

Access 関数:

QMessageBox::StandardButtons standardButtons() const
void setStandardButtons(QMessageBox::StandardButtons buttons)

関連項目: addButton()。

text : QString

このプロパティには、表示されるメッセージボックスのテキストが格納されます。

テキストは、状況を説明する簡潔な文またはフレーズとし、中立的な記述、あるいは行動を促す質問として表現するのが理想的です。

テキストは、テキスト形式の設定(QMessageBox::textFormat )に応じて、プレーンテキストまたはリッチテキストとして解釈されます。デフォルト設定はQt::AutoText 、つまり、メッセージボックスはテキストの形式を自動検出しようとします。

このプロパティのデフォルト値は空の文字列です。

アクセス関数:

QString text() const
void setText(const QString &text)

関連項目: textFormat 、QMessageBox::informativeText 、およびQMessageBox::detailedText 。

textFormat : Qt::TextFormat

このプロパティは、メッセージボックスに表示されるテキストの書式を保持します

メッセージボックスで使用される現在のテキスト形式です。利用可能なオプションの説明については、Qt::TextFormat 列挙型を参照してください。

デフォルトの書式は「Qt::AutoText 」です。

アクセス関数:

Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat format)

setText()も参照してください 。

textInteractionFlags : Qt::TextInteractionFlags

メッセージボックスのラベルが、ユーザーの入力に対してどのように反応するかを指定します。

デフォルト値はスタイルによって異なります。

Access 関数:

Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)

「QStyle::SH_MessageBox_TextInteractionFlags」も参照してください 。

メンバ関数のドキュメント

[explicit] QMessageBox::QMessageBox(QWidget *parent = nullptr)

テキストもボタンもないapplication modal メッセージボックスを作成します。parent がQDialog のコンストラクタに渡されます。

ウィンドウのモーダリティは、show() を呼び出す前に、setWindowModality() を通じて上書きすることができます。

注: open() またはexec()を使用して メッセージボックスを表示すると、ウィンドウのモーダリティに影響します。詳細については、各関数の詳細なドキュメントを参照してください。

macOSにおいて、メッセージボックスをparent のQt::Sheet として表示したい場合は、メッセージボックスのwindow modality をQt::WindowModal に設定するか、open()を使用してください。そうしないと、メッセージボックスは標準のダイアログとして表示されます。

setWindowTitle()、setText()、setIcon()、setStandardButtons()、およびsetWindowModality()も参照してください 。

QMessageBox::QMessageBox(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)

指定されたicon 、title 、text 、および標準のbuttons を使用して、application modal メッセージボックスを構築します。addButton() を使用することで、標準またはカスタムのボタンをいつでも追加できます。parent およびf 引数は、QDialog コンストラクタに渡されます。

ウィンドウのモーダリティは、show() を呼び出す前に、setWindowModality() を使用して上書きできます。

注: open() またはexec()を使用して メッセージボックスを表示すると、ウィンドウのモーダリティに影響します。詳細については、各関数の詳細なドキュメントを参照してください。

macOSにおいて、parent がnullptr ではない場合、メッセージボックスをその親ウィンドウのQt::Sheet として表示させたい場合は、メッセージボックスのwindow modality をQt::WindowModal (デフォルト)に設定してください。そうしない場合、メッセージボックスは標準のダイアログとして表示されます。

関連項目: setWindowTitle()、setText()、setIcon()、setStandardButtons()、およびsetWindowModality()。

[virtual noexcept] QMessageBox::~QMessageBox()

メッセージボックスを閉じます。

[static] void QMessageBox::about(QWidget *parent, const QString &title, const QString &text)

「title 」というタイトルと、「text 」というテキストを含む、シンプルな「About」ボックスを表示します。この「About」ボックスの親要素はparent です。

about() は、4つの場所から適切なアイコンを検索します。

  1. parent->icon() が存在する場合、それを優先します。
  2. 存在しない場合は、parent を含む最上位のウィジェットを試みます。
  3. それでも見つからない場合は、active window.
  4. 最後の手段として、「情報」アイコンを使用します。

「about」ボックスには、「OK」というラベルの付いたボタンが 1 つあります。

macOS では、「About」ボックスはモーダルではないウィンドウとしてポップアップ表示されますが、他のプラットフォームでは、現在はアプリケーションのモーダルウィンドウとして表示されます。

QWidget::windowIcon() およびQApplication::activeWindow()も参照してください 。

[static] void QMessageBox::aboutQt(QWidget *parent, const QString &title = QString())

Qtに関する簡単なメッセージボックスを表示します。指定されたtitle に基づき、parent を基準に中央揃えで表示されます(parent がnullptr でない場合)。メッセージには、アプリケーションで使用されているQtのバージョン番号が含まれます。

これは、「Menus」の例に示されているように、アプリケーションの「Help 」メニューに組み込む際に役立ちます。

QApplication この機能はスロットとして提供されています。

macOS では、aboutQt ボックスはモーダルではないウィンドウとしてポップアップ表示されますが、その他のプラットフォームでは、現在はアプリケーションのモーダルウィンドウとして表示されます。

QApplication::aboutQt()も参照してください 。

void QMessageBox::addButton(QAbstractButton *button, QMessageBox::ButtonRole role)

指定されたbutton を、指定されたrole を持つメッセージボックスに追加します。

removeButton()、button()、およびsetStandardButtons()も参照してください 。

QPushButton *QMessageBox::addButton(QMessageBox::StandardButton button)

メッセージボックスへのbutton の追加が有効である場合に、それを追加し、プッシュボタンを返します。

これはオーバーロードされた関数です。

setStandardButtons()も参照してください 。

QPushButton *QMessageBox::addButton(const QString &text, QMessageBox::ButtonRole role)

指定されたtext を持つボタンを作成し、指定されたrole のメッセージボックスに追加して、それを返します。

これはオーバーロードされた関数です。

QAbstractButton *QMessageBox::button(QMessageBox::StandardButton which) const

標準のボタンwhich に対応するポインタを返します。このメッセージボックスに標準のボタンが存在しない場合は、nullptr を返します。

注: 返されたボタンのプロパティを変更しても 、メッセージダイアログのネイティブ実装には反映されない場合があります。ダイアログのボタンをカスタマイズするには、代わりに `custom button ` または `button title ` を追加するか、`Option::DontUseNativeDialog ` オプションを設定してください。

「 standardButtons 」および「standardButton()」も参照してください 。

[signal] void QMessageBox::buttonClicked(QAbstractButton *button)

このシグナルは、QMessageBox 内でボタンがクリックされるたびに発生します。クリックされたボタンは、button で返されます。

QMessageBox::ButtonRole QMessageBox::buttonRole(QAbstractButton *button) const

指定されたbutton のボタンロールを返します。この関数は、button がnullptr である場合、またはメッセージボックスに追加されていない場合、InvalidRole を返します。

buttons() およびaddButton()も参照してください 。

QList<QAbstractButton *> QMessageBox::buttons() const

メッセージボックスに追加されたすべてのボタンのリストを返します。

buttonRole()、addButton()、およびremoveButton()も参照してください 。

[override virtual protected] void QMessageBox::changeEvent(QEvent *ev)

QWidget::changeEvent(QEvent *event) を再実装します。

QCheckBox *QMessageBox::checkBox() const

ダイアログに表示されているチェックボックスを返します。チェックボックスが設定されていない場合は、nullptr となります。

setCheckBox()も参照してください 。

QAbstractButton *QMessageBox::clickedButton() const

ユーザーがクリックしたボタンを返します。ユーザーがEsc キーを押したにもかかわらず、escape button が設定されていない場合は、nullptr を返します。

exec() がまだ呼び出されていない場合は、nullptr を返します。

例:

QMessageBox messageBox(this);
QAbstractButton *disconnectButton =
      messageBox.addButton(tr("Disconnect"), QMessageBox::ActionRole);
//...
messageBox.exec();
if (messageBox.clickedButton() == disconnectButton) {
    //...
}

standardButton() およびbutton()も参照してください 。

[override virtual protected] void QMessageBox::closeEvent(QCloseEvent *e)

QDialog::closeEvent(QCloseEvent *e) を再実装します。

[static] QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

指定されたparent ウィジェットの前面に、指定されたtitle およびtext を含む重要メッセージボックスを表示します。

標準のbuttons がメッセージボックスに追加されます。defaultButton は、Enter が押された際に使用されるボタンを指定します。defaultButton は、buttons で指定されたボタンを参照する必要があります。defaultButton がQMessageBox::NoButton である場合、QMessageBox は自動的に適切なデフォルトを選択します。

クリックされた標準ボタンのIDを返します。代わりにEsc が押された場合は、escape button が返されます。

メッセージボックスは、application modal ダイアログボックスです。

警告: ダイアログの実行中は、parent を削除しないでください 。削除したい場合は、QMessageBox のコンストラクタのいずれかを使用して、自分でダイアログを作成する必要があります。

関連項目: question()、warning()、およびinformation()。

QPushButton *QMessageBox::defaultButton() const

メッセージボックスの「default button 」となるボタンを返します。デフォルトボタンが設定されていない場合は、nullptrを返します。

関連項目: setDefaultButton()、addButton()、QPushButton::setDefault()。

QAbstractButton *QMessageBox::escapeButton() const

Escキーが押されたときにアクティブになるボタンを返します。

デフォルトでは、QMessageBox は次のようにEscキーに対応するボタンを自動的に検出しようとします:

  1. ボタンが1つしかない場合は、そのボタンがエスケープボタンとして設定されます。
  2. Cancel ボタンが存在する場合、それをエスケープボタンとして設定します。
  3. macOS のみ、QMessageBox::RejectRole という役割を持つボタンがちょうど 1 つある場合、そのボタンがエスケープボタンとして設定されます。

エスケープボタンが自動的に検出できなかった場合、Esc を押しても何の効果もありません。

setEscapeButton() およびaddButton()も参照してください 。

[override virtual protected] bool QMessageBox::event(QEvent *e)

QWidget::event(QEvent *event) を再実装します。

[override virtual slot] int QMessageBox::exec()

QDialog::exec() を再実装します。

メッセージボックスをmodal dialog として表示し、ユーザーが閉じるまで処理をブロックします。

標準ボタンと組み合わせてQMessageBox を使用する場合、この関数は、クリックされた標準ボタンを示すStandardButton 値を返します。カスタムボタンと組み合わせてQMessageBox を使用する場合、この関数は不透明な値を返します。どのボタンがクリックされたかを特定するには、clickedButton()を使用してください。

注: result() 関数も、QDialog::DialogCode ではなくStandardButton の値を返します。

ユーザーは、ボタンをクリックするか、ウィンドウシステムが提供するメカニズムを使用してダイアログを閉じるまで、同じアプリケーション内の他のウィンドウを操作することはできません。

show() およびresult()も参照してください 。

[static] QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

指定されたparent ウィジェットの前面に、指定されたtitle およびtext を含む情報メッセージボックスを表示します。

標準のbuttons がメッセージボックスに追加されます。defaultButton は、Enter が押された際に使用されるボタンを指定します。defaultButton は、buttons で指定されたボタンを参照している必要があります。defaultButton がQMessageBox::NoButton の場合、QMessageBox は自動的に適切なデフォルトを選択します。

クリックされた標準ボタンの識別子を返します。代わりにEsc が押された場合は、escape button が返されます。

メッセージボックスは、application modal ダイアログボックスです。

警告: ダイアログの実行中は、parent を削除しないでください 。削除したい場合は、QMessageBox のコンストラクタのいずれかを使用して、自分でダイアログを作成する必要があります。

関連項目: question()、warning()、およびcritical()。

[override virtual protected] void QMessageBox::keyPressEvent(QKeyEvent *e)

QDialog::keyPressEvent(QKeyEvent *e) を再実装します。

void QMessageBox::open(QObject *receiver, const char *member)

ダイアログを開き、そのfinished()またはbuttonClicked()シグナルを、receiver およびmember で指定されたスロットに接続します。member で指定されたスロットの最初のパラメータがポインタである場合、接続先はbuttonClicked()となります。それ以外の場合は、接続先はfinished()となります。

ダイアログが閉じられると、シグナルとスロットの接続は解除されます。

[static] QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = StandardButtons(Yes | No), QMessageBox::StandardButton defaultButton = NoButton)

指定されたparent ウィジェットの前に、指定されたtitle およびtext を含む質問メッセージボックスを表示します。

標準のbuttons がメッセージボックスに追加されます。defaultButton は、Enter が押された際に使用されるボタンを指定します。defaultButton は、buttons で指定されたボタンを参照する必要があります。defaultButton がQMessageBox::NoButton の場合、QMessageBox は自動的に適切なデフォルトを選択します。

クリックされた標準ボタンのIDを返します。代わりにEsc が押された場合は、escape button が返されます。

メッセージボックスは、application modal ダイアログボックスです。

警告: ダイアログの実行中は、parent を削除しないでください 。削除したい場合は、QMessageBox のコンストラクタのいずれかを使用して、自分でダイアログを作成する必要があります。

関連項目: information()、warning()、critical()。

void QMessageBox::removeButton(QAbstractButton *button)

button を削除せずに、ボタンボックスから削除します。

addButton() およびsetStandardButtons()も参照してください 。

[override virtual protected] void QMessageBox::resizeEvent(QResizeEvent *event)

QDialog::resizeEvent (QResizeEvent *)を再実装します。

void QMessageBox::setCheckBox(QCheckBox *cb)

メッセージダイアログ上のチェックボックス「cb 」を設定します。メッセージボックスがこのチェックボックスの所有権を取得します。引数cb には、nullptr を指定することで、メッセージボックスから既存のチェックボックスを削除することができます。

checkBox()も参照してください 。

void QMessageBox::setDefaultButton(QMessageBox::StandardButton button)

メッセージボックスのdefault button をbutton に設定します。

defaultButton()、addButton()、およびQPushButton::setDefault()も参照してください 。

void QMessageBox::setDefaultButton(QPushButton *button)

メッセージボックスの「default button 」を「button 」に設定します。

addButton() およびQPushButton::setDefault()も参照してください 。

void QMessageBox::setEscapeButton(QAbstractButton *button)

Escape キーが押されたときに動作するボタンをbutton に設定します。

escapeButton()、addButton()、およびclickedButton()も参照してください 。

void QMessageBox::setEscapeButton(QMessageBox::StandardButton button)

Escape キーが押されたときに動作するボタンを、button に設定します。

addButton() およびclickedButton()も参照してください 。

[since 6.6] void QMessageBox::setOption(QMessageBox::Option option, bool on = true)

on がtrueの場合、指定されたoption を有効にします。そうでない場合は、指定されたoption をクリアします。

オプション(特にOption::DontUseNativeDialog オプション)は、ダイアログを表示する前に設定しておく必要があります。

ダイアログが表示されている間にオプションを設定しても、その設定がダイアログに即座に反映されるとは限りません。

他のプロパティを変更した後にオプションを設定すると、これらの値が反映されない場合があります。

この関数は Qt 6.6 で導入されました。

options およびtestOption()も参照してください 。

void QMessageBox::setWindowModality(Qt::WindowModality windowModality)

この関数は、QWidget::setWindowModality() をオーバーライドします。

メッセージボックスのモーダリティをwindowModality に設定します。

macOSにおいて、モダリティがQt::WindowModal に設定されており、メッセージボックスに親がある場合、そのメッセージボックスはQt::Sheet となります。そうでない場合は、メッセージボックスは標準のダイアログとなります。

void QMessageBox::setWindowTitle(const QString &title)

この関数は、QWidget::setWindowTitle() をオーバーライドします。

メッセージボックスのタイトルを「title 」に設定します。macOS では、ウィンドウのタイトルは無視されます(macOS ガイドラインの要件による)。

[override virtual protected] void QMessageBox::showEvent(QShowEvent *e)

QDialog::showEvent(QShowEvent *event) を再実装します。

QMessageBox::StandardButton QMessageBox::standardButton(QAbstractButton *button) const

指定されたbutton に対応する標準ボタンの列挙値を返します。指定されたbutton が標準ボタンでない場合は、NoButton を返します。

button() およびstandardButtons()も参照してください 。

[since 6.6] bool QMessageBox::testOption(QMessageBox::Option option) const

指定されたoption が有効な場合はtrue を返し、そうでない場合はfalseを返します。

この関数は Qt 6.6 で導入されました。

options およびsetOption()も参照してください 。

[static] QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = Ok, QMessageBox::StandardButton defaultButton = NoButton)

指定されたparent ウィジェットの前面に、指定されたtitle およびtext を含む警告メッセージボックスを表示します。

標準のbuttons がメッセージボックスに追加されます。defaultButton は、Enter が押された際に使用されるボタンを指定します。defaultButton は、buttons で指定されたボタンを参照している必要があります。defaultButton がQMessageBox::NoButton の場合、QMessageBox は自動的に適切なデフォルトを選択します。

クリックされた標準ボタンの識別子を返します。代わりにEsc が押された場合は、escape button が返されます。

メッセージボックスは、application modal ダイアログボックスです。

警告: ダイアログの実行中は、parent を削除しないでください 。削除したい場合は、QMessageBox のコンストラクタのいずれかを使用して、自分でダイアログを作成する必要があります。

関連項目: question()、information()、およびcritical()。

マクロのドキュメント

QT_REQUIRE_VERSION(int argc, char **argv, const char *version)

このマクロを使用すると、アプリケーションが十分に新しいバージョンのQtで実行されるようにすることができます。これは、アプリケーションがバグ修正リリース(例えば6.1.2)で導入された特定のバグ修正に依存している場合に特に役立ちます。

argc およびargv パラメータは、main() 関数のargc およびargv パラメータに相当します。version パラメータは、アプリケーションが必要とするQtのバージョンを指定する文字列リテラルです(例:"6.1.2")。

例:

#include <QApplication>
#include <QMessageBox>

int main(int argc, char *argv[])
{
    QT_REQUIRE_VERSION(argc, argv, "4.0.2")

    QApplication app(argc, argv);
    //...
    return app.exec();
}

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.