Auf dieser Seite

QDialogButtonBox Class

Die Klasse „QDialogButtonBox“ ist ein Widget, das Schaltflächen in einem Layout anzeigt, das dem aktuellen Widget-Stil entspricht. Mehr...

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

Öffentliche Typen

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

Eigenschaften

Öffentliche Funktionen

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

Signale

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

Statische öffentliche Mitglieder

(since 6.12) QKeySequence standardButtonShortcut(QDialogButtonBox::StandardButton button)
(since 6.12) QString standardButtonText(QDialogButtonBox::StandardButton button)

Neu implementierte geschützte Funktionen

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

Ausführliche Beschreibung

Dialogfelder und Meldungsfelder zeigen Schaltflächen in der Regel in einem Layout an, das den Schnittstellenrichtlinien der jeweiligen Plattform entspricht. Die verschiedenen Plattformen weisen ausnahmslos unterschiedliche Layouts für ihre Dialogfelder auf. Mit QDialogButtonBox kann ein Entwickler Schaltflächen hinzufügen, wobei automatisch das für die Desktop-Umgebung des Benutzers geeignete Layout verwendet wird.

Die meisten Schaltflächen in einem Dialog erfüllen bestimmte Funktionen. Zu diesen Funktionen gehören:

  • Das Bestätigen oder Ablehnen des Dialogs.
  • Hilfe anfordern.
  • Ausführen von Aktionen im Dialog selbst (z. B. Felder zurücksetzen oder Änderungen übernehmen).

Es kann auch alternative Möglichkeiten zum Schließen des Dialogs geben, die zu unerwünschten Ergebnissen führen können.

Die meisten Dialoge verfügen über Schaltflächen, die fast schon als Standard angesehen werden können (z. B. die Schaltflächen „ OK “ und „ Cancel “). Manchmal ist es praktisch, diese Schaltflächen auf standardisierte Weise zu erstellen.

Es gibt mehrere Möglichkeiten, `QDialogButtonBox` zu verwenden. Eine Möglichkeit besteht darin, die Schaltflächen (oder Schaltflächentexte) selbst zu erstellen und sie der Schaltflächenbox hinzuzufügen, wobei ihre Rolle angegeben wird.

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

Alternativ stellt QDialogButtonBox mehrere Standardschaltflächen (z. B. „OK“, „Abbrechen“, „Speichern“) zur Verfügung, die Sie verwenden können. Diese sind als Flags verfügbar, sodass Sie sie im Konstruktor miteinander verknüpfen können.

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

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

Sie können normale Schaltflächen und Standardschaltflächen beliebig kombinieren.

Derzeit werden die Schaltflächen wie folgt angeordnet, wenn die Schaltflächenbox horizontal ausgerichtet ist:

Mehrere Schaltflächen mit dem horizontalen Layout „GnomeLayout“ GnomeLayout HorizontalSchaltflächenleiste horizontal angeordnet GnomeLayout
Mehrere Schaltflächen, die das horizontale Layout „KdeLayout“ verwenden KdeLayout HorizontalSchaltflächenfeld horizontal angeordnet KdeLayout
Mehrere Schaltflächen mit dem horizontalen Layout „MacLayout“ MacLayout HorizontalSchaltflächenfeld in horizontaler Anordnung MacLayout
Mehrere Schaltflächen mit dem horizontalen Layout „WinLayout“ WinLayout HorizontalSchaltflächenbox in horizontaler Anordnung WinLayout

Die Schaltflächen werden wie folgt angeordnet, wenn die Schaltflächenbox vertikal ausgerichtet ist:

Darüber hinaus können Schaltflächenboxen, die ausschließlich Schaltflächen mit den Attributen „ ActionRole “ oder „ HelpRole “ enthalten, als moduslos betrachtet werden und weisen unter macOS ein alternatives Erscheinungsbild auf:

modellos horizontal MacLayoutMehrere Schaltflächen im horizontalen, modusunabhängigen Stil unter macOS Screenshot von „modeless horizontal“ MacLayout
modeless vertikal MacLayoutMehrere Schaltflächen im horizontalen, moduslosen Stil unter macOS Screenshot der moduslosen vertikalen Anordnung MacLayout

Wenn eine Schaltfläche in der Schaltflächenbox angeklickt wird, wird das Signal „ clicked()“ für die tatsächlich gedrückte Schaltfläche ausgelöst. Der Einfachheit halber werden, falls die Schaltfläche über „ AcceptRole “, „ RejectRole “ oder „ HelpRole “ verfügt, jeweils die Signale „ accepted()“, „ rejected()“ oder „ helpRequested()“ ausgelöst.

Wenn Sie möchten, dass eine bestimmte Schaltfläche als Standard festgelegt wird, müssen Sie selbst die Funktion ` QPushButton::setDefault()` dafür aufrufen. Ist jedoch keine Standardschaltfläche festgelegt und soll bei Verwendung der Eigenschaft ` QPushButton::autoDefault ` plattformübergreifend beibehalten werden, welche Schaltfläche die Standardschaltfläche ist, wird die erste Schaltfläche mit der Rolle „accept“ beim Anzeigen der `QDialogButtonBox` zur Standardschaltfläche gemacht,

Siehe auch „ QMessageBox “, „ QPushButton “ und „ QDialog “.

Dokumentation zu Mitgliedstypen

enum QDialogButtonBox::ButtonLayout

Diese Enumeration beschreibt die Layout-Richtlinie, die bei der Anordnung der in der Schaltflächenbox enthaltenen Schaltflächen verwendet werden soll.

KonstanteWertBeschreibung
QDialogButtonBox::WinLayout0Verwenden Sie eine Richtlinie, die für Anwendungen unter Windows geeignet ist.
QDialogButtonBox::MacLayout1Verwende eine Richtlinie, die für Anwendungen unter macOS geeignet ist.
QDialogButtonBox::KdeLayout2Verwenden Sie eine Richtlinie, die für Anwendungen unter KDE geeignet ist.
QDialogButtonBox::GnomeLayout3Verwenden Sie eine Richtlinie, die für Anwendungen unter GNOME geeignet ist.
QDialogButtonBox::AndroidLayout4Verwenden Sie eine Richtlinie, die für Anwendungen unter Android geeignet ist. Dieser Enum-Wert wurde in Qt 5.10 hinzugefügt.

Das Layout der Schaltflächen wird durch die „ current style “ festgelegt. Auf der X11-Plattform kann es jedoch durch die Desktop-Umgebung beeinflusst werden.

enum QDialogButtonBox::ButtonRole

Diese Enumeration beschreibt die Rollen, mit denen Schaltflächen in der Schaltflächenleiste beschrieben werden können. Kombinationen dieser Rollen dienen als Kennzeichen zur Beschreibung verschiedener Aspekte ihres Verhaltens.

KonstanteWertBeschreibung
QDialogButtonBox::InvalidRole-1Die Schaltfläche ist ungültig.
QDialogButtonBox::AcceptRole0Ein Klick auf die Schaltfläche führt zur Bestätigung des Dialogfelds (z. B. „OK“).
QDialogButtonBox::RejectRole1Ein Klick auf die Schaltfläche führt dazu, dass der Dialog abgelehnt wird (z. B. „Abbrechen“).
QDialogButtonBox::DestructiveRole2Ein Klick auf die Schaltfläche führt zu einer irreversiblen Änderung (z. B. bei „Änderungen verwerfen“) und schließt den Dialog.
QDialogButtonBox::ActionRole3Ein Klick auf die Schaltfläche bewirkt Änderungen an den Elementen innerhalb des Dialogfelds.
QDialogButtonBox::HelpRole4Durch Klicken auf die Schaltfläche kann Hilfe angefordert werden.
QDialogButtonBox::YesRole5Die Schaltfläche ist eine „Ja“-ähnliche Schaltfläche.
QDialogButtonBox::NoRole6Die Schaltfläche ist eine „Nein“-ähnliche Schaltfläche.
QDialogButtonBox::ApplyRole8Die Schaltfläche übernimmt die aktuellen Änderungen.
QDialogButtonBox::ResetRole7Die Schaltfläche setzt die Felder des Dialogfelds auf die Standardwerte zurück.

Siehe auch „ StandardButton “.

enum QDialogButtonBox::StandardButton
flags QDialogButtonBox::StandardButtons

Diese Enums beschreiben Flags für Standardschaltflächen. Für jede Schaltfläche ist ein „ ButtonRole “ definiert.

KonstanteWertBeschreibung
QDialogButtonBox::Ok0x00000400Eine „OK“-Schaltfläche, definiert mit dem AcceptRole.
QDialogButtonBox::Open0x00002000Eine „Öffnen“-Schaltfläche, definiert mit der AcceptRole.
QDialogButtonBox::Save0x00000800Eine Schaltfläche „Speichern“, definiert mit dem Befehl „ AcceptRole “.
QDialogButtonBox::Cancel0x00400000Eine „Abbrechen“-Schaltfläche, definiert mit der Funktion ` RejectRole`.
QDialogButtonBox::Close0x00200000Eine Schaltfläche „Schließen“, definiert mit dem RejectRole.
QDialogButtonBox::Discard0x00800000Eine Schaltfläche „Verwerfen“ oder „Nicht speichern“ (je nach Plattform), definiert mit dem Element ` DestructiveRole`.
QDialogButtonBox::Apply0x02000000Eine Schaltfläche „Übernehmen“, definiert mit dem Befehl ` ApplyRole`.
QDialogButtonBox::Reset0x04000000Eine Schaltfläche „Zurücksetzen“, definiert mit dem Befehl ` ResetRole`.
QDialogButtonBox::RestoreDefaults0x08000000Eine Schaltfläche „Standardeinstellungen wiederherstellen“, definiert mit der Funktion ` ResetRole`.
QDialogButtonBox::Help0x01000000Eine Schaltfläche „Hilfe“, definiert mit dem „ HelpRole “.
QDialogButtonBox::SaveAll0x00001000Eine Schaltfläche „Alle speichern“, definiert mit dem „ AcceptRole “.
QDialogButtonBox::Yes0x00004000Eine Schaltfläche „Ja“, definiert mit dem „ YesRole “.
QDialogButtonBox::YesToAll0x00008000Eine Schaltfläche „Ja zu allen“, definiert mit der Funktion ` YesRole`.
QDialogButtonBox::No0x00010000Eine Schaltfläche „Nein“, definiert mit dem NoRole.
QDialogButtonBox::NoToAll0x00020000Eine Schaltfläche „Nein zu allen“, definiert mit dem „ NoRole “.
QDialogButtonBox::Abort0x00040000Eine Schaltfläche „Abbrechen“, definiert mit dem Befehl „ RejectRole “.
QDialogButtonBox::Retry0x00080000Eine Schaltfläche „Erneut versuchen“, definiert mit dem AcceptRole.
QDialogButtonBox::Ignore0x00100000Eine Schaltfläche „Ignorieren“, definiert mit dem Attribut „ AcceptRole “.
QDialogButtonBox::NoButton0x00000000Eine ungültige Schaltfläche.

Der Typ `StandardButtons` ist ein `typedef` für ` QFlags<StandardButton>`. Er speichert eine ODER-Kombination von `StandardButton`-Werten.

Siehe auch „ ButtonRole “ und „ standardButtons “.

Eigenschaftsdokumentation

centerButtons : bool

Diese Eigenschaft legt fest, ob die Schaltflächen in der Schaltflächenbox zentriert sind

Standardmäßig ist diese Eigenschaft auf „ false “ gesetzt. Dieses Verhalten ist für die meisten Arten von Dialogfeldern geeignet. Eine bemerkenswerte Ausnahme bilden Meldungsfelder auf den meisten Plattformen (z. B. Windows), bei denen die Schaltflächenleiste horizontal zentriert ist.

Zugriffsfunktionen:

bool centerButtons() const
void setCenterButtons(bool center)

Siehe auch „ QMessageBox “.

orientation : Qt::Orientation

Diese Eigenschaft legt die Ausrichtung der Schaltflächenbox fest

Standardmäßig ist die Ausrichtung horizontal (d. h., die Schaltflächen sind nebeneinander angeordnet). Mögliche Ausrichtungen sind „ Qt::Horizontal “ und „ Qt::Vertical “.

Zugriffsfunktionen:

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

standardButtons : StandardButtons

Sammlung von Standardschaltflächen in der Schaltflächenleiste

Diese Eigenschaft legt fest, welche Standardschaltflächen von der Schaltflächenleiste verwendet werden.

Zugriffsfunktionen:

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

Siehe auch „ addButton()“.

Dokumentation der Member-Funktionen

QDialogButtonBox::QDialogButtonBox(QWidget *parent = nullptr)

Erstellt eine leere, horizontale Schaltflächenbox mit dem angegebenen „ parent “.

Siehe auch ` orientation ` und ` addButton()`.

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

Erstellt eine horizontale Schaltflächenbox mit dem angegebenen „ parent “, die die durch „ buttons “ festgelegten Standardschaltflächen enthält.

Siehe auch orientation und addButton().

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

Erstellt eine leere Schaltflächenbox mit den angegebenen Werten für „ orientation “ und „ parent “.

Siehe auch orientation und addButton().

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

Erstellt eine Schaltflächenbox mit den angegebenen Werten für „ orientation “ und „ parent “, die die durch „ buttons “ festgelegten Standardschaltflächen enthält.

Siehe auch orientation und addButton().

[virtual noexcept] QDialogButtonBox::~QDialogButtonBox()

Zerstört die Schaltflächenleiste.

[signal] void QDialogButtonBox::accepted()

Dieses Signal wird ausgelöst, wenn eine Schaltfläche innerhalb der Schaltflächenbox angeklickt wird, sofern diese mit den Attributen „ AcceptRole “ oder „ YesRole “ definiert wurde.

Siehe auch rejected(), clicked() und helpRequested().

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

Fügt der Schaltflächenbox ein Standard- button hinzu, sofern dies zulässig ist, und gibt eine Schaltfläche zurück. Ist button ungültig, wird es nicht zur Schaltflächenbox hinzugefügt, und es wird Null zurückgegeben.

Siehe auch „ removeButton()“ und „ clear()“.

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

Fügt die angegebene Rolle „ button “ zur Schaltflächenbox mit der angegebenen Rolle „ role “ hinzu. Ist die Rolle ungültig, wird die Schaltfläche nicht hinzugefügt.

Wenn die Schaltfläche bereits hinzugefügt wurde, wird sie entfernt und mit der neuen Rolle erneut hinzugefügt.

Hinweis: Die Schaltflächenbox übernimmt die Eigentümerschaft an der Schaltfläche.

Siehe auch „ removeButton()“ und „ clear()“.

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

Erstellt eine Schaltfläche mit dem angegebenen text, fügt sie der Schaltflächenbox für das angegebene role hinzu und gibt die entsprechende Schaltfläche zurück. Ist role ungültig, wird keine Schaltfläche erstellt und Null zurückgegeben.

Siehe auch removeButton() und clear().

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

Gibt den „ QPushButton “ zurück, der der Standardschaltfläche „ which “ entspricht, oder „ nullptr “, falls die Standardschaltfläche in dieser Schaltflächenleiste nicht vorhanden ist.

Siehe auch standardButton(), standardButtons() und buttons().

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

Gibt die Schaltflächenrolle für das angegebene „ button “ zurück. Diese Funktion gibt „ InvalidRole “ zurück, wenn „ button “ den Wert „ nullptr “ hat oder nicht zur Schaltflächenbox hinzugefügt wurde.

Siehe auch „ buttons()“ und „ addButton()“.

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

Gibt eine Liste aller Schaltflächen zurück, die der Schaltflächenbox hinzugefügt wurden.

Siehe auch buttonRole(), addButton() und removeButton().

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

Umsetzt: ` QWidget::changeEvent(QEvent *event)`.

void QDialogButtonBox::clear()

Löscht das Schaltflächenfeld und entfernt alle darin enthaltenen Schaltflächen.

Siehe auch removeButton() und addButton().

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

Dieses Signal wird ausgelöst, wenn eine Schaltfläche innerhalb der Schaltflächenbox angeklickt wird. Welche Schaltfläche genau gedrückt wurde, wird durch „ button “ angegeben.

Siehe auch accepted(), rejected() und helpRequested().

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

Umsetzt: QWidget::event(QEvent *event).

[signal] void QDialogButtonBox::helpRequested()

Dieses Signal wird ausgelöst, wenn eine Schaltfläche innerhalb der Schaltflächenbox angeklickt wird, sofern diese mit der Funktion „ HelpRole “ definiert wurde.

Siehe auch „ accepted()“, „ rejected()“ und „ clicked()“.

[signal] void QDialogButtonBox::rejected()

Dieses Signal wird ausgelöst, wenn eine Schaltfläche innerhalb der Schaltflächenbox angeklickt wird, sofern diese mit dem Attribut „ RejectRole “ oder „ NoRole “ definiert wurde.

Siehe auch accepted(), helpRequested() und clicked().

void QDialogButtonBox::removeButton(QAbstractButton *button)

Entfernt „ button “ aus der Schaltflächenbox, ohne es zu löschen, und setzt dessen übergeordnetes Element auf Null.

Siehe auch „ clear()“, „ buttons()“ und „ addButton()“.

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

Gibt den Standard-Enum-Wert für die Schaltfläche zurück, der dem angegebenen button entspricht, oder NoButton, falls die angegebene button keine Standardschaltfläche ist.

Siehe auch button(), buttons() und standardButtons().

[static, since 6.12] QKeySequence QDialogButtonBox::standardButtonShortcut(QDialogButtonBox::StandardButton button)

Gibt die Tastenkombination für die Standard- button zurück. Die Tastenkombination ist plattformabhängig. Gibt ein leeres QKeySequence zurück, wenn button keine zugehörige Tastenkombination hat oder keine erkannte Standardschaltfläche ist.

Diese Funktion wurde in Qt 6.12 eingeführt.

Siehe auch „ standardButtonText()“ und „ StandardButton “.

[static, since 6.12] QString QDialogButtonBox::standardButtonText(QDialogButtonBox::StandardButton button)

Gibt den Anzeigetext für die Standardschaltfläche „ button “ zurück, wie er auf der Schaltflächenbeschriftung angezeigt wird. Der Text ist plattform- und sprachumgebungsabhängig.

Gibt eine leere Zeichenkette zurück, wenn „ button “ kein erkannter Standard-Button ist.

Diese Funktion wurde in Qt 6.12 eingeführt.

Siehe auch „ standardButtonShortcut()“ und „ StandardButton “.

© 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.