Auf dieser Seite

QPushButton Class

Das Widget „QPushButton“ stellt eine Befehlsschaltfläche bereit. Mehr...

Kopfzeile: #include <QPushButton>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Erbt von: QAbstractButton
Vererbt an:

QCommandLinkButton

Eigenschaften

Öffentliche Funktionen

QPushButton(QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
virtual ~QPushButton()
bool autoDefault() const
bool isDefault() const
bool isFlat() const
QMenu *menu() const
void setAutoDefault(bool)
void setDefault(bool)
void setFlat(bool)
void setMenu(QMenu *menu)

Neu implementierte öffentliche Funktionen

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Öffentliche Slots

void showMenu()

Geschützte Funktionen

virtual void initStyleOption(QStyleOptionButton *option) const

Neu implementierte geschützte Funktionen

virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual bool hitButton(const QPoint &pos) const override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

Ausführliche Beschreibung

Schaltfläche zum Erstellen eines neuen Dokuments

Die Schaltfläche, auch Befehlsschaltfläche genannt, ist wohl das am häufigsten verwendete Widget in jeder grafischen Benutzeroberfläche. Durch Drücken (Klicken) einer Schaltfläche wird der Computer angewiesen, eine bestimmte Aktion auszuführen oder eine Frage zu beantworten. Typische Schaltflächen sind „OK“, „Übernehmen“, „Abbrechen“, „Schließen“, „Ja“, „Nein“ und „Hilfe“.

Eine Befehlsschaltfläche ist rechteckig und zeigt in der Regel eine Textbeschriftung an, die ihre Aktion beschreibt. Eine Tastenkombination kann festgelegt werden, indem dem gewünschten Zeichen im Text ein Und-Zeichen vorangestellt wird. Zum Beispiel:

QPushButton *button = new QPushButton("&Download", this);

In diesem Beispiel lautet die Tastenkombination „Alt+D“. Weitere Informationen finden Sie in der Dokumentation zu „ QShortcut “ (um ein echtes Und-Zeichen anzuzeigen, verwenden Sie „&&“).

Drucktasten zeigen eine Textbeschriftung und optional ein kleines Symbol an. Diese können mithilfe der Konstruktoren festgelegt und später mit den Methoden ` setText()` und ` setIcon()` geändert werden. Ist die Schaltfläche deaktiviert, wird die Darstellung des Textes und des Symbols entsprechend dem GUI-Stil angepasst, damit die Schaltfläche „deaktiviert“ aussieht.

Eine Drucktaste sendet das Signal ` clicked()` aus, wenn sie mit der Maus, der Leertaste oder über eine Tastenkombination aktiviert wird. Verbinden Sie sich mit diesem Signal, um die Aktion der Taste auszuführen. Drucktasten stellen auch weniger häufig verwendete Signale bereit, zum Beispiel ` pressed()` und ` released()`.

connect(dispenseButton, &QPushButton::clicked, this, &IceCreamMaker::dispense);

Befehlsschaltflächen in Dialogfeldern sind standardmäßig „Auto-Default“-Schaltflächen, d. h., sie werden automatisch zur Standardschaltfläche, sobald sie den Tastatureingabefokus erhalten. Eine Standardschaltfläche ist eine Schaltfläche, die aktiviert wird, wenn der Benutzer in einem Dialogfeld die Eingabetaste (Enter oder Return) drückt. Sie können dies mit ` setAutoDefault()` ändern. Beachten Sie, dass automatische Standardschaltflächen etwas zusätzlichen Platz reservieren, der zum Zeichnen eines Standardschaltflächen-Indikators erforderlich ist. Wenn Sie diesen Platz um Ihre Schaltflächen herum nicht wünschen, rufen Sie ` setAutoDefault(false)` auf.

Da das Schaltflächen-Widget eine so zentrale Rolle spielt, hat es sich in den letzten zehn Jahren weiterentwickelt und bietet nun eine Vielzahl von Varianten. Der Microsoft-Styleguide zeigt mittlerweile etwa zehn verschiedene Zustände von Windows-Schaltflächen, und der Text lässt vermuten, dass es Dutzende weitere gibt, wenn man alle Kombinationen von Funktionen berücksichtigt.

Die wichtigsten Modi oder Zustände sind:

  • Verfügbar oder nicht (ausgegraut, deaktiviert).
  • Standard-Druckknopf, Umschalt-Druckknopf oder Menü-Druckknopf.
  • Ein oder Aus (nur für Umschalt-Drucktasten).
  • Standard oder normal. Die Standardschaltfläche in einem Dialogfeld kann in der Regel mit der Eingabetaste oder der Return-Taste „angeklickt“ werden.
  • Automatische Wiederholung oder nicht.
  • Gedrückt oder nicht.

Als allgemeine Regel gilt: Verwenden Sie eine Schaltfläche, wenn die Anwendung oder das Dialogfenster eine Aktion ausführt, sobald der Benutzer darauf klickt (z. B. „Übernehmen“, „Abbrechen“, „Schließen“ und „Hilfe“), und wenn das Widget eine breite, rechteckige Form mit einer Textbeschriftung haben soll. Kleine, typischerweise quadratische Schaltflächen, die den Zustand des Fensters ändern, anstatt eine Aktion auszuführen (wie z. B. die Schaltflächen in der oberen rechten Ecke des „ QFileDialog “), sind keine Befehlsschaltflächen, sondern Werkzeugschaltflächen. Qt stellt für diese Schaltflächen eine spezielle Klasse (QToolButton) bereit.

Wenn Sie ein Umschaltverhalten benötigen (siehe setCheckable()) oder eine Schaltfläche, die das Aktivierungssignal beim Herunterdrücken automatisch wiederholt, wie die Pfeile in einer Bildlaufleiste (siehe setAutoRepeat()), ist eine Befehlsschaltfläche wahrscheinlich nicht das Richtige für Sie. Im Zweifelsfall sollten Sie eine Werkzeugschaltfläche verwenden.

Hinweis: Unter macOS werden die Ecken einer Schaltfläche von rund auf eckig geändert, wenn ihre Breite kleiner als 50 oder ihre Höhe kleiner als 30 wird. Verwenden Sie die Funktion setMinimumSize(), um dieses Verhalten zu verhindern.

Eine Variante der Befehlsschaltfläche ist die Menüschaltfläche. Diese bietet nicht nur einen, sondern mehrere Befehle, da beim Klicken ein Menü mit Optionen angezeigt wird. Verwenden Sie die Methode ` setMenu()` (), um einer Schaltfläche ein Popup-Menü zuzuweisen.

Weitere Klassen von Schaltflächen sind Optionsschaltflächen (siehe QRadioButton) und Kontrollkästchen (siehe QCheckBox).

In Qt stellt die Basisklasse ` QAbstractButton ` die meisten Modi und weitere API-Funktionen bereit, während `QPushButton` die GUI-Logik bereitstellt. Weitere Informationen zur API finden Sie unter QAbstractButton.

Siehe auch „ QToolButton “, „ QRadioButton “ und „ QCheckBox “.

Dokumentation zu den Eigenschaften

autoDefault : bool

Diese Eigenschaft gibt an, ob es sich bei der Schaltfläche um eine Schaltfläche mit automatischer Standardauswahl handelt

Wenn diese Eigenschaft auf „true“ gesetzt ist, handelt es sich bei der Schaltfläche um eine automatische Standardschaltfläche.

In einigen GUI-Stilen wird eine Standardschaltfläche mit einem zusätzlichen Rahmen um sie herum dargestellt, der bis zu 3 Pixel oder mehr breit sein kann. Qt hält diesen Abstand um automatische Standardschaltflächen automatisch frei, d. h., automatische Standardschaltflächen können einen etwas größeren Größenhinweis aufweisen.

Der Standardwert dieser Eigenschaft ist „true“ für Schaltflächen, deren übergeordnete Komponente „ QDialog “ ist; andernfalls ist der Standardwert „false“.

Weitere Informationen zum Zusammenspiel von „ default “ und „auto-default“ finden Sie unter der Eigenschaft „ default “.

Zugriffsfunktionen:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

Diese Eigenschaft gibt an, ob die Schaltfläche die Standardschaltfläche ist

Standard- und Auto-Standard-Schaltflächen legen fest, was geschieht, wenn der Benutzer in einem Dialogfeld die Eingabetaste drückt.

Eine Schaltfläche, bei der diese Eigenschaft auf „true“ gesetzt ist (d. h. die Standardschaltfläche des Dialogfelds), wird automatisch gedrückt, wenn der Benutzer die Eingabetaste drückt – mit einer Ausnahme: Wenn eine Schaltfläche vom Typ „ autoDefault “ gerade den Fokus hat, wird die Schaltfläche vom Typ „ autoDefault “ gedrückt. Wenn der Dialog über „ autoDefault “-Schaltflächen verfügt, aber keine Standardschaltfläche, wird durch Drücken der Eingabetaste entweder die „ autoDefault “-Schaltfläche betätigt, die derzeit den Fokus hat, oder, falls keine Schaltfläche den Fokus hat, die nächste „ autoDefault “-Schaltfläche in der Fokus-Kette.

In einem Dialogfeld kann jeweils nur eine Schaltfläche als Standardschaltfläche fungieren. Diese Schaltfläche wird dann (je nach GUI-Stil) mit einem zusätzlichen Rahmen angezeigt.

Das Verhalten der Standardschaltfläche ist nur in Dialogen verfügbar. Schaltflächen können jederzeit über die Tastatur durch Drücken der Leertaste betätigt werden, wenn die Schaltfläche den Fokus hat.

Wenn die Eigenschaft „default“ für die aktuelle Standardschaltfläche auf „false“ gesetzt ist, während der Dialog sichtbar ist, wird automatisch eine neue Standardschaltfläche zugewiesen, sobald eine Schaltfläche im Dialog den Fokus erhält.

Der Standardwert dieser Eigenschaft ist „false“.

Zugriffsfunktionen:

bool isDefault() const
void setDefault(bool)

flat : bool

Diese Eigenschaft gibt an, ob der Rahmen der Schaltfläche hervorgehoben ist

Der Standardwert dieser Eigenschaft ist „false“. Wenn diese Eigenschaft gesetzt ist, wird der Hintergrund der Schaltfläche bei den meisten Stilen nur dann gezeichnet, wenn die Schaltfläche gedrückt wird. Mit „ setAutoFillBackground()“ kann sichergestellt werden, dass der Hintergrund mit dem Pinsel „ QPalette::Button “ gefüllt wird.

Zugriffsfunktionen:

bool isFlat() const
void setFlat(bool)

Dokumentation zu den Member-Funktionen

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

Erstellt eine Schaltfläche ohne Text und mit der Eigenschaft „ parent “.

[explicit] QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

Erstellt eine Schaltfläche mit dem übergeordneten Element „ parent “ und dem Text „ text “.

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)

Erstellt eine Schaltfläche mit einem ` icon `, einem ` text` und einem ` parent`.

Beachten Sie, dass Sie auch ein ` QPixmap `-Objekt als Symbol übergeben können (dank der impliziten Typkonvertierung, die C++ bereitstellt).

[virtual noexcept] QPushButton::~QPushButton()

Zerstört den Druckknopf.

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

Implementiert: ` QAbstractButton::event(QEvent *e)`.

[override virtual protected] void QPushButton::focusInEvent(QFocusEvent *e)

Umsetzt: ` QAbstractButton::focusInEvent(QFocusEvent *e)`.

[override virtual protected] void QPushButton::focusOutEvent(QFocusEvent *e)

Umsetzt: ` QAbstractButton::focusOutEvent(QFocusEvent *e)`.

[override virtual protected] bool QPushButton::hitButton(const QPoint &pos) const

Implementiert neu: QAbstractButton::hitButton(const QPoint &pos) const.

[virtual protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

Initialisieren Sie ` option ` mit den Werten aus dieser Datei: QPushButton. Diese Methode ist für Unterklassen nützlich, wenn diese ein ` QStyleOptionButton` benötigen, aber nicht alle Informationen selbst eingeben möchten.

Siehe auch ` QStyleOption::initFrom()`.

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

Implementiert: ` QAbstractButton::keyPressEvent(QKeyEvent *e)`.

Gibt das dem Button zugeordnete Popup-Menü zurück oder „ nullptr “, falls kein Popup-Menü festgelegt wurde.

Siehe auch „ setMenu()“.

[override virtual] QSize QPushButton::minimumSizeHint() const

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::minimumSizeHint “ neu.

[override virtual protected] void QPushButton::mouseMoveEvent(QMouseEvent *e)

Implementiert: ` QAbstractButton::mouseMoveEvent(QMouseEvent *e)`.

[override virtual protected] void QPushButton::paintEvent(QPaintEvent *)

Umsetzt: ` QAbstractButton::paintEvent(QPaintEvent *e)`.

void QPushButton::setMenu(QMenu *menu)

Weist dieser Schaltfläche das Popup-Menü „ menu “ zu. Dadurch wird die Schaltfläche zu einer Menüschaltfläche, bei der in manchen Stilen rechts neben dem Schaltflächentext ein kleines Dreieck angezeigt wird.

Die Zugehörigkeit des Menüs wird nicht auf die Schaltfläche übertragen.

Druckknopf mit Popup-Menü

Eine Schaltfläche mit Popup-Menüs, dargestellt im Fusion-Widget-Stil.

Siehe auch „ menu()“.

[slot] void QPushButton::showMenu()

Zeigt das zugehörige Popup-Menü an (öffnet es). Falls kein solches Menü vorhanden ist, führt diese Funktion keine Aktion aus. Diese Funktion kehrt erst zurück, wenn das Popup-Menü vom Benutzer geschlossen wurde.

[override virtual] QSize QPushButton::sizeHint() const

Implementiert eine Zugriffsfunktion für die Eigenschaft „ QWidget::sizeHint “ neu.

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