QPushButton Class

Das QPushButton-Widget bietet eine Befehlsschaltfläche. Mehr...

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

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)

Reimplementierte ö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

Reimplementierte 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

Detaillierte Beschreibung

Die Drucktaste oder Befehlsschaltfläche ist vielleicht das am häufigsten verwendete Widget in einer grafischen Benutzeroberfläche. Drücken (klicken) Sie auf eine Schaltfläche, um dem Computer zu befehlen, eine Aktion durchzufü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 die jeweilige Aktion beschreibt. Ein Tastenkürzel kann angegeben werden, indem dem gewünschten Zeichen ein kaufmännisches Und im Text vorangestellt wird. Ein Beispiel:

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

In diesem Beispiel lautet das Tastenkürzel Alt+D. Weitere Informationen finden Sie in der Dokumentation QShortcut (um ein echtes kaufmännisches Und-Zeichen anzuzeigen, verwenden Sie '&&').

Drucktasten zeigen eine textuelle Beschriftung und optional ein kleines Symbol an. Diese können mit den Konstruktoren festgelegt und später mit setText() und setIcon() geändert werden. Wenn die Schaltfläche deaktiviert ist, wird das Aussehen des Textes und des Symbols in Bezug auf den GUI-Stil manipuliert, damit die Schaltfläche "deaktiviert" aussieht.

Eine Drucktaste gibt das Signal clicked() aus, wenn sie mit der Maus, der Leertaste oder einem Tastaturkürzel aktiviert wird. Verbinden Sie sich mit diesem Signal, um die Aktion der Taste auszuführen. Drucktasten liefern auch weniger gebräuchliche Signale, zum Beispiel pressed() und released().

Befehlsschaltflächen in Dialogen sind standardmäßig Auto-Default-Schaltflächen, d. h., sie werden automatisch zur Standard-Drucktaste, wenn sie den Fokus der Tastatureingabe erhalten. Eine Standardschaltfläche ist eine Drucktaste, die aktiviert wird, wenn der Benutzer die Enter- oder Return-Taste in einem Dialog drückt. Sie können dies mit setAutoDefault() ändern. Beachten Sie, dass automatische Standardschaltflächen einen kleinen zusätzlichen Platz reservieren, der notwendig ist, um eine Standardschaltflächenanzeige zu zeichnen. Wenn Sie diesen Platz um Ihre Schaltflächen nicht wünschen, rufen Sie setAutoDefault(false) auf.

Da das Schaltflächen-Widget so zentral ist, hat es in den letzten zehn Jahren eine Vielzahl von Variationen angenommen. Der Microsoft-Styleguide zeigt jetzt etwa zehn verschiedene Zustände von Windows-Tasten, und der Text deutet an, dass es noch Dutzende weiterer gibt, wenn alle Kombinationen von Funktionen berücksichtigt werden.

Die wichtigsten Modi oder Zustände sind:

  • Verfügbar oder nicht (ausgegraut, deaktiviert).
  • Standarddrucktaste, Umschalttaste oder Menütaste.
  • An oder aus (nur bei Umschalttasten).
  • Standard oder normal. Die Standardtaste in einem Dialog kann in der Regel mit der Enter- oder Return-Taste "angeklickt" werden.
  • Auto-Wiederholung oder nicht.
  • Niedergedrückt oder nicht.

Als allgemeine Regel gilt: Verwenden Sie eine Drucktaste, wenn die Anwendung oder das Dialogfenster eine Aktion ausführt, wenn der Benutzer darauf klickt (z. B. Anwenden, 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 die Schaltflächen in der oberen rechten Ecke von QFileDialog), sind keine Befehlsschaltflächen, sondern Werkzeugschaltflächen. Qt bietet eine spezielle Klasse (QToolButton) für diese Schaltflächen.

Wenn Sie ein Umschaltverhalten benötigen (siehe setCheckable()) oder eine Schaltfläche, die das Aktivierungssignal automatisch wiederholt, wenn sie nach unten gedrückt wird, wie die Pfeile in einer Bildlaufleiste (siehe setAutoRepeat()), ist eine Befehlsschaltfläche wahrscheinlich nicht das, was Sie wollen. Verwenden Sie im Zweifelsfall eine Werkzeugschaltfläche.

Hinweis: Wenn unter macOS die Breite einer Drucktaste kleiner als 50 oder ihre Höhe kleiner als 30 wird, werden die Ecken der Taste von rund auf quadratisch geändert. Verwenden Sie die Funktion setMinimumSize(), um dieses Verhalten zu verhindern.

Eine Variante einer Befehlsschaltfläche ist eine Menüschaltfläche. Diese bieten nicht nur einen, sondern mehrere Befehle, denn wenn sie angeklickt werden, öffnet sich ein Menü mit Optionen. Verwenden Sie die Methode setMenu(), um ein Popup-Menü mit einer Drucktaste zu verknüpfen.

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

In Qt stellt die Basisklasse QAbstractButton die meisten Modi und andere APIs zur Verfügung, während QPushButton die GUI-Logik liefert. Siehe QAbstractButton für weitere Informationen über die API.

Siehe auch QToolButton, QRadioButton, und QCheckBox.

Dokumentation der Eigenschaften

autoDefault : bool

Diese Eigenschaft gibt an, ob die Drucktaste eine automatische Standardtaste ist

Wenn diese Eigenschaft auf true gesetzt ist, ist die Drucktaste eine automatische Standardtaste.

In einigen GUI-Styles wird ein Standard-Button mit einem zusätzlichen Rahmen um ihn herum gezeichnet, bis zu 3 Pixel oder mehr. Qt hält diesen Platz um Auto-Default-Buttons automatisch frei, d.h. Auto-Default-Buttons können einen etwas größeren Hinweis auf die Größe haben.

Die Voreinstellung dieser Eigenschaft ist true für Buttons, die einen QDialog parent haben; andernfalls ist sie standardmäßig false.

Siehe die Eigenschaft default für Details über das Zusammenspiel von default und auto-default.

Zugriffsfunktionen:

bool autoDefault() const
void setAutoDefault(bool)

default : bool

Diese Eigenschaft gibt an, ob die Drucktaste die Standardtaste ist

Standard- und Autodefault-Schaltflächen bestimmen, was passiert, wenn der Benutzer in einem Dialog die Eingabetaste drückt.

Eine Schaltfläche, bei der diese Eigenschaft auf true gesetzt ist (d.h. die Standard-Schaltfläche des Dialogs), wird automatisch gedrückt, wenn der Benutzer die Eingabetaste drückt, mit einer Ausnahme: Wenn eine autoDefault -Schaltfläche gerade den Fokus hat, wird die autoDefault -Schaltfläche gedrückt. Wenn das Dialogfeld über autoDefault Schaltflächen, aber keine Standardschaltfläche verfügt, wird beim Drücken der Eingabetaste entweder die autoDefault Schaltfläche gedrückt, die gerade den Fokus hat, oder, wenn keine Schaltfläche den Fokus hat, die nächste autoDefault Schaltfläche in der Fokuskette.

In einem Dialog kann immer nur eine Drucktaste die Standardtaste sein. Diese Taste wird dann mit einem zusätzlichen Rahmen angezeigt (je nach GUI-Stil).

Das Verhalten der Standardschaltfläche ist nur in Dialogen vorgesehen. Schaltflächen können immer über die Tastatur angeklickt werden, indem die Leertaste gedrückt wird, wenn die Schaltfläche den Fokus hat.

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

Der Standardwert für diese Eigenschaft ist false.

Zugriffsfunktionen:

bool isDefault() const
void setDefault(bool)

flat : bool

Diese Eigenschaft gibt an, ob der Rand der Schaltfläche angehoben ist.

Die Voreinstellung für diese Eigenschaft ist false. Wenn diese Eigenschaft gesetzt ist, malen die meisten Stile den Hintergrund der Schaltfläche nicht, es sei denn, die Schaltfläche wird gerade gedrückt. setAutoFillBackground() kann verwendet werden, um sicherzustellen, dass der Hintergrund mit dem Pinsel QPalette::Button gefüllt wird.

Zugriffsfunktionen:

bool isFlat() const
void setFlat(bool)

Dokumentation der Mitgliedsfunktionen

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

Konstruiert eine Drucktaste ohne Text und eine parent.

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

Konstruiert eine Drucktaste mit dem übergeordneten parent und dem Text text.

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

Konstruiert eine Drucktaste mit einem icon und einem text sowie einem parent.

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

[virtual noexcept] QPushButton::~QPushButton()

Zerstört den Druckknopf.

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

Reimplements: QAbstractButton::event(QEvent *e).

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

Reimplements: QAbstractButton::focusInEvent(QFocusEvent *e).

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

Reimplements: QAbstractButton::focusOutEvent(QFocusEvent *e).

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

Reimplements: QAbstractButton::hitButton(const QPoint &pos) const.

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

Initialisieren Sie option mit den Werten aus dieser QPushButton. Diese Methode ist nützlich für Unterklassen, wenn sie eine QStyleOptionButton benötigen, aber nicht alle Informationen selbst eingeben wollen.

Siehe auch QStyleOption::initFrom().

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

Reimplements: QAbstractButton::keyPressEvent(QKeyEvent *e).

Gibt das zugehörige Popup-Menü der Schaltfläche zurück oder nullptr, wenn kein Popup-Menü festgelegt wurde.

Siehe auch setMenu().

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::minimumSizeHint.

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

Reimplements: QAbstractButton::mouseMoveEvent(QMouseEvent *e).

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

Reimplements: QAbstractButton::paintEvent(QPaintEvent *e).

void QPushButton::setMenu(QMenu *menu)

Verknüpft das Popup-Menü menu mit dieser Drucktaste. Dadurch wird die Taste zu einer Menütaste, die in einigen Stilen ein kleines Dreieck rechts neben dem Text der Taste erzeugt.

Die Eigentümerschaft des Menüs wird nicht auf die Drucktaste übertragen.

Screenshot of a Fusion style push button with popup menu.

Eine Drucktaste mit Popup-Menüs, dargestellt im Fusion-Widget-Stil.

Siehe auch menu().

[slot] void QPushButton::showMenu()

Zeigt (öffnet) das zugehörige Popup-Menü. Wenn es kein solches Menü gibt, bewirkt diese Funktion nichts. Diese Funktion kehrt erst zurück, wenn der Benutzer das Popup-Menü geschlossen hat.

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

Reimplantiert eine Zugriffsfunktion für die Eigenschaft: QWidget::sizeHint.

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