QDialogButtonBox Class

QDialogButtonBoxクラスは、現在のウィジェットスタイルに適したレイアウトでボタンを表示するウィジェットです。詳細...

Header: #include <QDialogButtonBox>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Inherits: QWidget

パブリック・タイプ

enum ButtonLayout { WinLayout, MacLayout, KdeLayout, GnomeLayout, AndroidLayout }
enum ButtonRole { InvalidRole, AcceptRole, RejectRole, DestructiveRole, ActionRole, …, ResetRole }
enum StandardButton { Ok, Open, Save, Cancel, Close, …, NoButton }
flags StandardButtons

プロパティ

パブリック関数

QDialogButtonBox(QWidget *parent = nullptr)
QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr)
QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr)
QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr)
virtual ~QDialogButtonBox()
QPushButton *addButton(QDialogButtonBox::StandardButton button)
void addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role)
QPushButton *addButton(const QString &text, QDialogButtonBox::ButtonRole role)
QPushButton *button(QDialogButtonBox::StandardButton which) const
QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button) const
QList<QAbstractButton *> buttons() const
bool centerButtons() const
void clear()
Qt::Orientation orientation() const
void removeButton(QAbstractButton *button)
void setCenterButtons(bool center)
void setOrientation(Qt::Orientation orientation)
void setStandardButtons(QDialogButtonBox::StandardButtons buttons)
QDialogButtonBox::StandardButton standardButton(QAbstractButton *button) const
QDialogButtonBox::StandardButtons standardButtons() const

シグナル

void accepted()
void clicked(QAbstractButton *button)
void helpRequested()
void rejected()

再実装された保護された関数

virtual void changeEvent(QEvent *event) override
virtual bool event(QEvent *event) override

詳しい説明

ダイアログやメッセージボックスは通常、そのプラットフォームのインターフェースガイドラインに従ったレイアウトでボタンを表示します。必ず、異なるプラットフォームでは、ダイアログのレイアウトが異なります。QDialogButtonBoxでは、開発者がボタンを追加することができ、ユーザーのデスクトップ環境に適したレイアウトを自動的に使用します。

ダイアログのほとんどのボタンは、特定の役割に従います。そのような役割には次のようなものがあります:

  • ダイアログを受け入れるか拒否するか。
  • 助けを求める。
  • ダイアログ自体に対するアクションの実行(フィールドのリセットや変更の適用など)。

破壊的な結果を引き起こす可能性のある、ダイアログを却下する別の方法もありえます。

ほとんどのダイアログには、ほとんど標準的といえるボタンがあります(例えば、OKCancel ボタン)。これらのボタンを標準的な方法で作成すると便利なことがあります。

QDialogButtonBoxを使用するにはいくつかの方法があります。一つは、ボタン(またはボタンテキスト)を自分で作成し、ボタンボックスに追加する方法です。

    QDialogButtonBox *buttonBox = new QDialogButtonBox(Qt::Vertical);
    buttonBox->addButton(findButton, QDialogButtonBox::ActionRole);
    buttonBox->addButton(moreButton, QDialogButtonBox::ActionRole);

あるいは、QDialogButtonBoxは、いくつかの標準的なボタン(例えば、OK、Cancel、Save)を提供しています。これらはフラグとして存在するので、コンストラクタでそれらを OR OR することができます。

    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                     | QDialogButtonBox::Cancel);

    connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);

通常のボタンと標準のボタンを混ぜて使うこともできます。

現在のところ、ボタンボックスが横長の場合、ボタンは以下のようにレイアウトされます:

GnomeLayout 水平水平にレイアウトされたボタンボックスGnomeLayout
KdeLayout 水平横並びのボタンボックスKdeLayout
MacLayout 水平横長のボタンボックスMacLayout
WinLayout 横長水平にレイアウトされたボタンボックスWinLayout

ボタンボックスが縦長の場合、ボタンは以下のようにレイアウトされます:

さらに、ActionRole またはHelpRole のボタンだけを含むボタンボックスは、モデルレスとみなされ、macOSでは別の外観になります:

モードレス水平MacLayout モードレス横型のスクリーンショットMacLayout
モードレス垂直MacLayout モードレス垂直のスクリーンショットMacLayout

ボタンボックスでボタンがクリックされると、実際に押されたボタンに対してclicked() シグナルが発せられる。便宜上、ボタンがAcceptRoleRejectRoleHelpRole の場合、それぞれaccepted ()、rejected ()、helpRequested ()シグナルが発せられます。

特定のボタンをデフォルトにしたい場合は、自分でQPushButton::setDefault() を呼び出す必要がある。しかし、デフォルト・ボタンが設定されておらず、QPushButton::autoDefault プロパティを使用するときに、どのボタンがデフォルト・ボタンであるかをプラットフォーム間で保持するために、QDialogButtonBox が表示されているときに、accept ロールを持つ最初のプッシュ・ボタンがデフォルト・ボタンになります、

QMessageBoxQPushButtonQDialogも参照してください

メンバ型ドキュメント

enum QDialogButtonBox::ButtonLayout

この列挙型は、ボタンボックスに含まれるボタンを配置するときに使用されるレイアウトポリシーを記述します。

定数説明
QDialogButtonBox::WinLayout0Windows 上のアプリケーションに適したポリシーを使用する。
QDialogButtonBox::MacLayout1macOS 上のアプリケーションに適したポリシーを使用する。
QDialogButtonBox::KdeLayout2KDE上のアプリケーションに適切なポリシーを使用する。
QDialogButtonBox::GnomeLayout3GNOME上のアプリケーションに適切なポリシーを使用する。
QDialogButtonBox::AndroidLayout4Android 上のアプリケーションに適したポリシーを使用する。この列挙値は Qt 5.10 で追加されました。

ボタンのレイアウトは、current style で指定されます。ただし、X11 プラットフォームでは、デスクトップ環境の影響を受けることがあります。

enum QDialogButtonBox::ButtonRole

このenumは、ボタンボックス内のボタンを記述するために使用できる役割を記述します。これらのロールの組み合わせは、その動作の異なる側面を記述するために使用されるフラグとして使用されます。

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

StandardButtonも参照してください

enum QDialogButtonBox::StandardButton
flags QDialogButtonBox::StandardButtons

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

定数説明
QDialogButtonBox::Ok0x00000400OK" ボタンは、AcceptRole で定義されています。
QDialogButtonBox::Open0x00002000AcceptRole で定義された「開く」ボタン。
QDialogButtonBox::Save0x00000800AcceptRole で定義された "保存 "ボタン。
QDialogButtonBox::Cancel0x00400000RejectRole で定義された「キャンセル」ボタン。
QDialogButtonBox::Close0x00200000RejectRole で定義された「閉じる」ボタン。
QDialogButtonBox::Discard0x00800000プラットフォームによって異なるが、DestructiveRole で定義された「破棄」または「保存しない」ボタン。
QDialogButtonBox::Apply0x02000000ApplyRole
QDialogButtonBox::Reset0x04000000ResetRole で定義された「リセット」ボタン。
QDialogButtonBox::RestoreDefaults0x08000000ResetRole で定義されている「デフォルトに戻す」ボタン。
QDialogButtonBox::Help0x01000000HelpRole で定義された「ヘルプ」ボタン。
QDialogButtonBox::SaveAll0x00001000AcceptRole で定義された「すべて保存」ボタン。
QDialogButtonBox::Yes0x00004000YesRole で定義された「はい」ボタン。
QDialogButtonBox::YesToAll0x00008000YesRole で定義された「Yes to All」ボタン。
QDialogButtonBox::No0x00010000NoRole で定義された「いいえ」ボタン。
QDialogButtonBox::NoToAll0x00020000NoRole で定義された「No to All」ボタン。
QDialogButtonBox::Abort0x00040000RejectRole で定義された「中止」ボタン。
QDialogButtonBox::Retry0x00080000AcceptRole で定義される「再試行」ボタン。
QDialogButtonBox::Ignore0x00100000AcceptRole で定義された「無視」ボタン。
QDialogButtonBox::NoButton0x00000000無効なボタン。

StandardButtons型はQFlags<StandardButton>のtypedefである。StandardButtonの値のORの組み合わせが格納されます。

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

プロパティの説明

centerButtons : bool

このプロパティは、ボタンボックス内のボタンが中央に配置されているかどうかを保持します。

デフォルトでは、このプロパティはfalse です。この動作は、ほとんどのタイプのダイアログに適しています。特筆すべき例外は、ほとんどのプラットフォーム(例えばWindows)のメッセージボックスで、そこではボタンボックスは水平方向にセンタリングされます。

アクセス関数:

bool centerButtons() const
void setCenterButtons(bool center)

QMessageBoxも参照してください

orientation : Qt::Orientation

このプロパティは、ボタンボックスの向きを保持します。

デフォルトでは、方向は水平です(つまり、ボタンは横並びです)。可能な向きはQt::HorizontalQt::Vertical です。

アクセス機能:

Qt::Orientation orientation() const
void setOrientation(Qt::Orientation orientation)

standardButtons : StandardButtons

ボタンボックスの標準ボタンコレクション

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

アクセス関数:

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

addButton()も参照

メンバ関数 ドキュメント

QDialogButtonBox::QDialogButtonBox(QWidget *parent = nullptr)

指定されたparent で空の横長のボタンボックスを構築する。

orientation およびaddButton() も参照

[explicit] QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, QWidget *parent = nullptr)

与えられたparent で、buttons で指定された標準ボタンを含む横長のボタンボックスを構築します。

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

QDialogButtonBox::QDialogButtonBox(Qt::Orientation orientation, QWidget *parent = nullptr)

空のボタンボックスを、指定されたorientationparent で構築します。

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

QDialogButtonBox::QDialogButtonBox(QDialogButtonBox::StandardButtons buttons, Qt::Orientation orientation, QWidget *parent = nullptr)

指定されたorientationparent を用いて、buttons で指定された標準ボタンを含むボタンボックスを構築します。

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

[virtual noexcept] QDialogButtonBox::~QDialogButtonBox()

ボタンボックスを破棄します。

[signal] void QDialogButtonBox::accepted()

このシグナルは、AcceptRole またはYesRole で定義されている限り、ボタンボックス内のボタンがクリックされたときに発せられます。

rejected()、clicked()、helpRequested()も参照して ください。

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

標準のbutton が有効であれば、それをボタン・ボックスに追加し、プッシュ・ボタンを返します。button が無効な場合は、ボタン・ボックスに追加されず、0 が返される。

removeButton() およびclear()も参照

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

指定されたrole で、与えられたbutton をボタンボックスに追加します。ロールが無効な場合、ボタンは追加されません。

ボタンが既に追加されている場合は、削除され、新しいロールで再度追加されます。

注意: ボタンボックスはボタンの所有権を持ちます。

removeButton() およびclear()も参照してください

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

与えられたtext でプッシュボタンを作成し、それを指定されたrole のボタンボックスに追加し、対応するプッシュボタンを返します。role が無効な場合、ボタンは作成されず、0 が返されます。

removeButton() およびclear()も参照

QPushButton *QDialogButtonBox::button(QDialogButtonBox::StandardButton which) const

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

standardButton()、standardButtons()、buttons() も参照して ください。

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

指定されたbutton に対応するボタンの役割を返します。buttonnullptr であるか、またはボタン・ボックスに追加されていない場合、この関数はInvalidRole を返します。

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

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

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

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

[override virtual protected] void QDialogButtonBox::changeEvent(QEvent *event)

再実装:QWidget::changeEvent(QEvent *event)。

void QDialogButtonBox::clear()

ボタンボックスをクリアし、その中のすべてのボタンを削除します。

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

[signal] void QDialogButtonBox::clicked(QAbstractButton *button)

このシグナルは、ボタンボックス内のボタンがクリックされたときに発せられます。押されたボタンはbutton で指定します。

accepted()、rejected()、helpRequested() も参照

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

再実装:QWidget::event(QEvent *event)。

[signal] void QDialogButtonBox::helpRequested()

このシグナルは、HelpRole で定義されている限り、ボタンボックス内のボタンがクリックされたときに発行されます。

accepted(),rejected(),clicked()も参照してください

[signal] void QDialogButtonBox::rejected()

このシグナルは、RejectRole またはNoRole で定義されている限り、ボタン・ボックス内のボタンがクリックされたときに発せられます。

accepted()、helpRequested()、clicked()も参照

void QDialogButtonBox::removeButton(QAbstractButton *button)

button を削除せずにボタン・ボックスから削除し、その親をゼロに設定します。

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

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

与えられたbutton に対応する標準ボタン enum 値、または与えられたbutton が標準ボタンでない場合はNoButton を返します。

button()、buttons()、standardButtons()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。