Auf dieser Seite

QAbstractButton Class

Die Klasse „QAbstractButton“ ist die abstrakte Basisklasse für Schaltflächen-Widgets und stellt Funktionen bereit, die allen Schaltflächen gemeinsam sind. Mehr...

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

QCheckBox, „ QPushButton “, „ QRadioButton “ und QToolButton

Eigenschaften

Öffentliche Funktionen

QAbstractButton(QWidget *parent = nullptr)
virtual ~QAbstractButton()
bool autoExclusive() const
bool autoRepeat() const
int autoRepeatDelay() const
int autoRepeatInterval() const
QButtonGroup *group() const
QIcon icon() const
QSize iconSize() const
bool isCheckable() const
bool isChecked() const
bool isDown() const
void setAutoExclusive(bool)
void setAutoRepeat(bool)
void setAutoRepeatDelay(int)
void setAutoRepeatInterval(int)
void setCheckable(bool)
void setDown(bool)
void setIcon(const QIcon &icon)
void setShortcut(const QKeySequence &key)
void setText(const QString &text)
QKeySequence shortcut() const
QString text() const

Öffentliche Slots

void animateClick()
void click()
void setChecked(bool)
void setIconSize(const QSize &size)
void toggle()

Signale

void clicked(bool checked = false)
void pressed()
void released()
void toggled(bool checked)

Geschützte Funktionen

virtual void checkStateSet()
virtual bool hitButton(const QPoint &pos) const
virtual void nextCheckState()

Neu implementierte geschützte Funktionen

virtual void changeEvent(QEvent *e) override
virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void keyReleaseEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void mousePressEvent(QMouseEvent *e) override
virtual void mouseReleaseEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *e) override = 0
virtual void timerEvent(QTimerEvent *e) override

Ausführliche Beschreibung

Diese Klasse implementiert eine abstrakte Schaltfläche. Unterklassen dieser Klasse verarbeiten Benutzeraktionen und legen fest, wie die Schaltfläche gezeichnet wird.

QAbstractButton bietet Unterstützung sowohl für Drucktasten als auch für aktivierbare (Umschalt-)Schaltflächen. Aktivierbare Schaltflächen werden in den Klassen „ QRadioButton “ und „ QCheckBox “ implementiert. Drucktasten werden in den Klassen „ QPushButton “ und „ QToolButton “ implementiert; diese bieten bei Bedarf auch ein Umschaltverhalten.

Jede Schaltfläche kann eine Beschriftung mit Text und ein Symbol anzeigen. setText() legt den Text fest; setIcon() legt das Symbol fest. Ist eine Schaltfläche deaktiviert, wird ihre Beschriftung so geändert, dass die Schaltfläche als „deaktiviert“ erkennbar ist.

Handelt es sich bei der Schaltfläche um eine Text-Schaltfläche mit einer Zeichenkette, die ein Und-Zeichen („&“) enthält, erstellt QAbstractButton automatisch eine Tastenkombination. Beispiel:

QPushButton *button = new QPushButton(tr("Ro&ck && Roll"), this);

Der Tastenbefehl „ Alt+C “ wird der Schaltfläche zugewiesen, d. h., wenn der Benutzer „ Alt+C “ drückt, ruft die Schaltfläche „ animateClick()“ auf. Weitere Informationen finden Sie in der Dokumentation zu „ QShortcut “. Um ein echtes Und-Zeichen anzuzeigen, verwenden Sie „&&“.

Sie können auch eine benutzerdefinierte Tastenkombination mit der Funktion „ setShortcut()“ festlegen. Dies ist vor allem für Schaltflächen nützlich, die keinen Text enthalten und daher keine automatische Tastenkombination haben können.

button->setIcon(QIcon(":/images/print.png"));
button->setShortcut(tr("Alt+F7"));

Alle von Qt bereitgestellten Schaltflächen (QPushButton, QToolButton, QCheckBox und QRadioButton) können sowohl „ text “ als auch „ icons “ anzeigen.

Eine Schaltfläche kann mithilfe von ` QPushButton::setDefault()` und ` QPushButton::setAutoDefault()` zur Standardschaltfläche in einem Dialogfeld festgelegt werden.

QAbstractButton stellt die meisten Zustände bereit, die für Schaltflächen verwendet werden:

  • isDown() gibt an, ob die Schaltfläche gedrückt ist.
  • isChecked() gibt an, ob die Schaltfläche aktiviert ist. Nur aktivierbare Schaltflächen können aktiviert und deaktiviert werden (siehe unten).
  • isEnabled() gibt an, ob die Schaltfläche vom Benutzer gedrückt werden kann.

    Hinweis: Im Gegensatz zu anderen Widgets akzeptieren von QAbstractButton abgeleitete Schaltflächen auch im deaktivierten Zustand Maus- und Kontextmenü-Ereignisse.

  • setAutoRepeat() legt fest, ob die Schaltfläche automatisch wiederholt wird, wenn der Benutzer sie gedrückt hält. autoRepeatDelay und autoRepeatInterval definieren, wie die automatische Wiederholung erfolgt.
  • setCheckable() legt fest, ob es sich bei der Schaltfläche um eine Umschalt-Schaltfläche handelt oder nicht.

Der Unterschied zwischen „ isDown “ () und „ isChecked “ () ist wie folgt: Wenn der Benutzer auf eine Umschalt-Schaltfläche klickt, um sie zu aktivieren, wird die Schaltfläche zunächst gedrückt und dann in den aktivierten Zustand zurückgesetzt. Wenn der Benutzer erneut darauf klickt (um die Aktivierung aufzuheben), wechselt die Schaltfläche zunächst in den gedrückten Zustand und anschließend in den deaktivierten Zustand (isChecked() und isDown() sind beide „false“).

QAbstractButton stellt vier Signale bereit:

  1. pressed() wird ausgelöst, wenn die linke Maustaste gedrückt wird, während sich der Mauszeiger innerhalb der Schaltfläche befindet.
  2. released() wird ausgelöst, wenn die linke Maustaste losgelassen wird.
  3. clicked() wird ausgelöst, wenn die Schaltfläche zuerst gedrückt und dann losgelassen wird, wenn die Tastenkombination eingegeben wird oder wenn „ click()“ oder „ animateClick()“ aufgerufen wird.
  4. toggled() wird ausgelöst, wenn sich der Zustand einer Umschalt-Schaltfläche ändert.

Um eine Unterklasse von `QAbstractButton` zu erstellen, müssen Sie mindestens ` paintEvent()` neu implementieren, um den Umriss der Schaltfläche sowie deren Text oder Pixmap zu zeichnen. Es ist generell ratsam, auch ` sizeHint()` neu zu implementieren, und manchmal auch ` hitButton()` (um festzustellen, ob ein Tastendruck innerhalb der Schaltfläche erfolgt). Bei Schaltflächen mit mehr als zwei Zuständen (z. B. Schaltflächen mit drei Zuständen) müssen Sie außerdem die Methoden ` checkStateSet()` und ` nextCheckState()` neu implementieren.

Siehe auch QButtonGroup.

Dokumentation zu den Eigenschaften

autoExclusive : bool

Diese Eigenschaft gibt an, ob die automatische Exklusivität aktiviert ist

Wenn die automatische Exklusivität aktiviert ist, verhalten sich aktivierbare Schaltflächen, die zum selben übergeordneten Widget gehören, so, als wären sie Teil derselben exklusiven Schaltflächengruppe. In einer exklusiven Schaltflächengruppe kann jeweils nur eine Schaltfläche aktiviert sein; wird eine andere Schaltfläche aktiviert, wird die zuvor aktivierte automatisch deaktiviert.

Die Eigenschaft hat keine Auswirkung auf Schaltflächen, die zu einer Schaltflächengruppe gehören.

„autoExclusive“ ist standardmäßig deaktiviert, außer bei Optionsfeldern.

Zugriffsfunktionen:

bool autoExclusive() const
void setAutoExclusive(bool)

Siehe auch „ QRadioButton “.

autoRepeat : bool

Diese Eigenschaft gilt unabhängig davon, ob „autoRepeat“ aktiviert ist

Ist „autoRepeat“ aktiviert, werden die Signale „ pressed()“, „ released()“ und „ clicked()“ in regelmäßigen Abständen ausgesendet, solange die Taste gedrückt gehalten wird. „autoRepeat“ ist standardmäßig deaktiviert. Die anfängliche Verzögerung und das Wiederholungsintervall werden in Millisekunden durch „ autoRepeatDelay “ und „ autoRepeatInterval “ definiert.

Hinweis: Wird eine Taste über eine Tastenkombination gedrückt, wird die automatische Wiederholung aktiviert und vom System und nicht von dieser Klasse gesteuert. Die Signale „ pressed()“, „ released()“ und „ clicked()“ werden wie im Normalfall ausgelöst.

Zugriffsfunktionen:

bool autoRepeat() const
void setAutoRepeat(bool)

autoRepeatDelay : int

Diese Eigenschaft legt die anfängliche Verzögerung der automatischen Wiederholung fest

Wenn „ autoRepeat “ aktiviert ist, definiert „autoRepeatDelay“ die anfängliche Verzögerung in Millisekunden, bevor die automatische Wiederholung einsetzt.

Zugriffsfunktionen:

int autoRepeatDelay() const
void setAutoRepeatDelay(int)

Siehe auch „ autoRepeat “ und „ autoRepeatInterval “.

autoRepeatInterval : int

Diese Eigenschaft legt das Intervall für die automatische Wiederholung fest

Wenn „ autoRepeat “ aktiviert ist, legt „autoRepeatInterval“ die Dauer des Intervalls für die automatische Wiederholung in Millisekunden fest.

Zugriffsfunktionen:

int autoRepeatInterval() const
void setAutoRepeatInterval(int)

Siehe auch „ autoRepeat “ und „ autoRepeatDelay “.

checkable : bool

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

Standardmäßig ist die Schaltfläche nicht aktivierbar.

Zugriffsfunktionen:

bool isCheckable() const
void setCheckable(bool)

Siehe auch „ checked “.

checked : bool

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

Nur aktivierbare Schaltflächen können aktiviert werden. Standardmäßig ist die Schaltfläche nicht aktiviert.

Zugriffsfunktionen:

bool isChecked() const
void setChecked(bool)

Notifier-Signal:

void toggled(bool checked)

Siehe auch „ checkable “.

down : bool

Diese Eigenschaft gibt an, ob die Schaltfläche gedrückt ist

Ist diese Eigenschaft auf „ true “ gesetzt, ist die Schaltfläche gedrückt. Die Signale „ pressed()“ und „ clicked()“ werden nicht ausgelöst, wenn Sie diese Eigenschaft auf „true“ setzen. Der Standardwert ist „false“.

Zugriffsfunktionen:

bool isDown() const
void setDown(bool)

icon : QIcon

Diese Eigenschaft enthält das Symbol, das auf der Schaltfläche angezeigt wird

Die Standardgröße des Symbols wird durch den GUI-Stil festgelegt, kann jedoch durch Festlegen der Eigenschaft „ iconSize “ angepasst werden.

Zugriffsfunktionen:

QIcon icon() const
void setIcon(const QIcon &icon)

iconSize : QSize

Diese Eigenschaft enthält die für diese Schaltfläche verwendete Symbolgröße.

Die Standardgröße wird durch den GUI-Stil festgelegt. Dabei handelt es sich um die maximale Größe für die Symbole. Kleinere Symbole werden nicht vergrößert.

Zugriffsfunktionen:

QSize iconSize() const
void setIconSize(const QSize &size)

shortcut : QKeySequence

Diese Eigenschaft enthält die mit der Schaltfläche verknüpfte Mnemonik

Zugriffsfunktionen:

QKeySequence shortcut() const
void setShortcut(const QKeySequence &key)

text : QString

Diese Eigenschaft enthält den Text, der auf der Schaltfläche angezeigt wird

Wenn die Schaltfläche keinen Text enthält, gibt die Funktion „text()“ eine leere Zeichenkette zurück.

Enthält der Text ein Und-Zeichen („&“), wird automatisch eine Tastenkombination dafür erstellt. Das Zeichen, das auf das „&“ folgt, wird als Tastenkombination verwendet. Eine eventuell zuvor festgelegte Tastenkombination wird überschrieben oder gelöscht, wenn durch den Text keine Tastenkombination definiert wird. Weitere Informationen finden Sie in der Dokumentation zu „ QShortcut “. Um ein echtes Und-Zeichen anzuzeigen, verwenden Sie „&&“.

Es gibt keinen Standardtext.

Zugriffsfunktionen:

QString text() const
void setText(const QString &text)

Dokumentation zu den Member-Funktionen

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

Erstellt eine abstrakte Schaltfläche mit einem „ parent “.

[virtual noexcept] QAbstractButton::~QAbstractButton()

Löscht die Schaltfläche.

[slot] void QAbstractButton::animateClick()

Führt einen animierten Klick aus: Die Schaltfläche wird sofort gedrückt und 100 ms später wieder losgelassen.

Wird diese Funktion erneut aufgerufen, bevor die Schaltfläche losgelassen wird, wird der Loslass-Timer zurückgesetzt.

Alle mit einem Klick verbundenen Signale werden entsprechend ausgelöst.

Diese Funktion führt keine Aktion aus, wenn die Schaltfläche disabled.

Siehe auch ` click()`.

[override virtual protected] void QAbstractButton::changeEvent(QEvent *e)

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

[virtual protected] void QAbstractButton::checkStateSet()

Dieser virtuelle Handler wird aufgerufen, wenn ` setChecked()` verwendet wird, es sei denn, der Aufruf erfolgt innerhalb von ` nextCheckState()`. Er ermöglicht es Unterklassen, ihre Zwischenzustände der Schaltflächen zurückzusetzen.

Siehe auch ` nextCheckState()`.

[slot] void QAbstractButton::click()

Führt einen Klick aus.

Alle üblichen Signale, die mit einem Klick verbunden sind, werden entsprechend ausgegeben. Wenn die Schaltfläche aktivierbar ist, wird ihr Zustand umgeschaltet.

Diese Funktion führt keine Aktion aus, wenn die Schaltfläche disabled.

Siehe auch „ animateClick()“.

[signal] void QAbstractButton::clicked(bool checked = false)

Dieses Signal wird ausgelöst, wenn die Schaltfläche aktiviert wird (d. h. gedrückt und anschließend losgelassen wird, während sich der Mauszeiger innerhalb der Schaltfläche befindet), wenn die Tastenkombination eingegeben wird oder wenn ` click()` oder ` animateClick()` aufgerufen wird. Beachten Sie jedoch, dass dieses Signal nicht ausgelöst wird, wenn Sie ` setDown()`, ` setChecked()` oder ` toggle()` aufrufen.

Wenn die Schaltfläche aktivierbar ist, ist „ checked “ wahr, wenn die Schaltfläche aktiviert ist, und falsch, wenn sie deaktiviert ist.

Siehe auch „ pressed()“, „ released()“ und „ toggled()“.

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

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

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

Implementiert: ` QWidget::focusInEvent(QFocusEvent *event)`.

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

Implementiert: ` QWidget::focusOutEvent(QFocusEvent *event)`.

QButtonGroup *QAbstractButton::group() const

Gibt die Gruppe zurück, zu der diese Schaltfläche gehört.

Wenn die Schaltfläche keinem „ QButtonGroup “ angehört, gibt diese Funktion „ nullptr “ zurück.

Siehe auch „ QButtonGroup “.

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

Gibt „ true “ zurück, wenn sich „ pos “ innerhalb des klickbaren Rechtecks der Schaltfläche befindet; andernfalls wird „ false “ zurückgegeben.

Standardmäßig ist der anklickbare Bereich das gesamte Widget. Unterklassen können diese Funktion neu implementieren, um Unterstützung für anklickbare Bereiche unterschiedlicher Formen und Größen bereitzustellen.

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

Implementiert: QWidget::keyPressEvent(QKeyEvent *event).

[override virtual protected] void QAbstractButton::keyReleaseEvent(QKeyEvent *e)

Implementiert neu: ` QWidget::keyReleaseEvent(QKeyEvent *event)`.

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

Implementiert: ` QWidget::mouseMoveEvent` (`QMouseEvent *event`).

[override virtual protected] void QAbstractButton::mousePressEvent(QMouseEvent *e)

Implementiert: ` QWidget::mousePressEvent` (`QMouseEvent *event`).

[override virtual protected] void QAbstractButton::mouseReleaseEvent(QMouseEvent *e)

Implementiert: ` QWidget::mouseReleaseEvent(QMouseEvent *event)`.

[virtual protected] void QAbstractButton::nextCheckState()

Dieser virtuelle Handler wird aufgerufen, wenn auf eine Schaltfläche geklickt wird. Die Standardimplementierung ruft „ setChecked “ (! „isChecked “ ()) auf, wenn die Schaltfläche „ isCheckable “ () ist. Dies ermöglicht es Unterklassen, Zwischenzustände der Schaltfläche zu implementieren.

Siehe auch checkStateSet().

[override pure virtual protected] void QAbstractButton::paintEvent(QPaintEvent *e)

Umsetzt: ` QWidget::paintEvent` (`QPaintEvent *event`).

[signal] void QAbstractButton::pressed()

Dieses Signal wird ausgegeben, wenn die Taste gedrückt wird.

Siehe auch released() und clicked().

[signal] void QAbstractButton::released()

Dieses Signal wird ausgesendet, wenn die Taste losgelassen wird.

Siehe auch pressed(), clicked() und toggled().

[override virtual protected] void QAbstractButton::timerEvent(QTimerEvent *e)

Implementiert: ` QObject::timerEvent` (`QTimerEvent *event`).

[slot] void QAbstractButton::toggle()

Schaltet den Status einer aktivierbaren Schaltfläche um.

Siehe auch checked.

[signal] void QAbstractButton::toggled(bool checked)

Dieses Signal wird immer dann ausgelöst, wenn eine aktivierbare Schaltfläche ihren Zustand ändert. „ checked “ ist „true“, wenn die Schaltfläche aktiviert ist, und „false“, wenn sie deaktiviert ist.

Dies kann das Ergebnis einer Benutzeraktion, der Aktivierung des Slots „ click()“ oder des Aufrufs von „ setChecked()“ sein.

Die Zustände von Schaltflächen in exklusiven Schaltflächengruppen werden aktualisiert, bevor dieses Signal ausgesendet wird. Das bedeutet, dass Slots entweder auf das „off“-Signal oder das „on“-Signal reagieren können, das von den Schaltflächen in der Gruppe ausgesendet wird, deren Zustände sich geändert haben.

Beispielsweise lässt sich ein Slot, der auf Signale von neu aktivierten Schaltflächen reagiert, Signale von deaktivierten Schaltflächen jedoch ignoriert, mithilfe des folgenden Musters implementieren:

void MyWidget::reactToToggle(bool checked)
{
   if (checked) {
      // Examine the new button states.
      ...
   }
}

Schaltflächengruppen können mithilfe der Klasse „ QButtonGroup “ erstellt und Änderungen der Schaltflächenzustände mit dem Signal „ QButtonGroup::buttonClicked()“ überwacht werden.

Hinweis: Notifier -Signal für die Eigenschaft „ checked “.

Siehe auch „ checked “ und „ clicked()“.

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