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
- centerButtons : bool
- orientation : Qt::Orientation
- standardButtons : StandardButtons
Ö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:
GnomeLayout Horizontal | Schaltflächenleiste horizontal angeordnet GnomeLayout |
KdeLayout Horizontal | Schaltflächenfeld horizontal angeordnet KdeLayout |
MacLayout Horizontal | Schaltflächenfeld in horizontaler Anordnung MacLayout |
WinLayout Horizontal | Schaltflächenbox in horizontaler Anordnung WinLayout |
Die Schaltflächen werden wie folgt angeordnet, wenn die Schaltflächenbox vertikal ausgerichtet ist:
| GnomeLayout | KdeLayout | MacLayout | WinLayout |
GnomeLayout Vertikal | KdeLayout Vertikal | MacLayout Vertikal | WinLayout Vertikal |
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 MacLayout | Screenshot von „modeless horizontal“ MacLayout |
| modeless vertikal MacLayout | 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QDialogButtonBox::WinLayout | 0 | Verwenden Sie eine Richtlinie, die für Anwendungen unter Windows geeignet ist. |
QDialogButtonBox::MacLayout | 1 | Verwende eine Richtlinie, die für Anwendungen unter macOS geeignet ist. |
QDialogButtonBox::KdeLayout | 2 | Verwenden Sie eine Richtlinie, die für Anwendungen unter KDE geeignet ist. |
QDialogButtonBox::GnomeLayout | 3 | Verwenden Sie eine Richtlinie, die für Anwendungen unter GNOME geeignet ist. |
QDialogButtonBox::AndroidLayout | 4 | Verwenden 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QDialogButtonBox::InvalidRole | -1 | Die Schaltfläche ist ungültig. |
QDialogButtonBox::AcceptRole | 0 | Ein Klick auf die Schaltfläche führt zur Bestätigung des Dialogfelds (z. B. „OK“). |
QDialogButtonBox::RejectRole | 1 | Ein Klick auf die Schaltfläche führt dazu, dass der Dialog abgelehnt wird (z. B. „Abbrechen“). |
QDialogButtonBox::DestructiveRole | 2 | Ein Klick auf die Schaltfläche führt zu einer irreversiblen Änderung (z. B. bei „Änderungen verwerfen“) und schließt den Dialog. |
QDialogButtonBox::ActionRole | 3 | Ein Klick auf die Schaltfläche bewirkt Änderungen an den Elementen innerhalb des Dialogfelds. |
QDialogButtonBox::HelpRole | 4 | Durch Klicken auf die Schaltfläche kann Hilfe angefordert werden. |
QDialogButtonBox::YesRole | 5 | Die Schaltfläche ist eine „Ja“-ähnliche Schaltfläche. |
QDialogButtonBox::NoRole | 6 | Die Schaltfläche ist eine „Nein“-ähnliche Schaltfläche. |
QDialogButtonBox::ApplyRole | 8 | Die Schaltfläche übernimmt die aktuellen Änderungen. |
QDialogButtonBox::ResetRole | 7 | Die 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.
| Konstante | Wert | Beschreibung |
|---|---|---|
QDialogButtonBox::Ok | 0x00000400 | Eine „OK“-Schaltfläche, definiert mit dem AcceptRole. |
QDialogButtonBox::Open | 0x00002000 | Eine „Öffnen“-Schaltfläche, definiert mit der AcceptRole. |
QDialogButtonBox::Save | 0x00000800 | Eine Schaltfläche „Speichern“, definiert mit dem Befehl „ AcceptRole “. |
QDialogButtonBox::Cancel | 0x00400000 | Eine „Abbrechen“-Schaltfläche, definiert mit der Funktion ` RejectRole`. |
QDialogButtonBox::Close | 0x00200000 | Eine Schaltfläche „Schließen“, definiert mit dem RejectRole. |
QDialogButtonBox::Discard | 0x00800000 | Eine Schaltfläche „Verwerfen“ oder „Nicht speichern“ (je nach Plattform), definiert mit dem Element ` DestructiveRole`. |
QDialogButtonBox::Apply | 0x02000000 | Eine Schaltfläche „Übernehmen“, definiert mit dem Befehl ` ApplyRole`. |
QDialogButtonBox::Reset | 0x04000000 | Eine Schaltfläche „Zurücksetzen“, definiert mit dem Befehl ` ResetRole`. |
QDialogButtonBox::RestoreDefaults | 0x08000000 | Eine Schaltfläche „Standardeinstellungen wiederherstellen“, definiert mit der Funktion ` ResetRole`. |
QDialogButtonBox::Help | 0x01000000 | Eine Schaltfläche „Hilfe“, definiert mit dem „ HelpRole “. |
QDialogButtonBox::SaveAll | 0x00001000 | Eine Schaltfläche „Alle speichern“, definiert mit dem „ AcceptRole “. |
QDialogButtonBox::Yes | 0x00004000 | Eine Schaltfläche „Ja“, definiert mit dem „ YesRole “. |
QDialogButtonBox::YesToAll | 0x00008000 | Eine Schaltfläche „Ja zu allen“, definiert mit der Funktion ` YesRole`. |
QDialogButtonBox::No | 0x00010000 | Eine Schaltfläche „Nein“, definiert mit dem NoRole. |
QDialogButtonBox::NoToAll | 0x00020000 | Eine Schaltfläche „Nein zu allen“, definiert mit dem „ NoRole “. |
QDialogButtonBox::Abort | 0x00040000 | Eine Schaltfläche „Abbrechen“, definiert mit dem Befehl „ RejectRole “. |
QDialogButtonBox::Retry | 0x00080000 | Eine Schaltfläche „Erneut versuchen“, definiert mit dem AcceptRole. |
QDialogButtonBox::Ignore | 0x00100000 | Eine Schaltfläche „Ignorieren“, definiert mit dem Attribut „ AcceptRole “. |
QDialogButtonBox::NoButton | 0x00000000 | Eine 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.
Screenshot von „modeless horizontal“
Screenshot der moduslosen vertikalen Anordnung