QAbstractButton Class

Die Klasse QAbstractButton ist die abstrakte Basisklasse für Button-Widgets und bietet die für Buttons übliche Funktionalität. Mehr...

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

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()

Reimplementierte 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

Detaillierte Beschreibung

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

QAbstractButton unterstützt sowohl Druckknöpfe als auch überprüfbare (Toggle) Knöpfe. Überprüfbare Schaltflächen sind in den Klassen QRadioButton und QCheckBox implementiert. Drucktasten sind in den Klassen QPushButton und QToolButton implementiert; diese bieten bei Bedarf auch ein Umschaltverhalten.

Jede Schaltfläche kann ein Etikett mit Text und einem Symbol anzeigen. setText() legt den Text fest; setIcon() legt das Symbol fest. Wenn eine Schaltfläche deaktiviert ist, wird ihre Beschriftung geändert, um der Schaltfläche ein "deaktiviertes" Aussehen zu geben.

Wenn der Button ein Textbutton mit einer Zeichenkette ist, die ein kaufmännisches Und ('&') enthält, erstellt QAbstractButton automatisch eine Schnelltaste. Zum Beispiel:

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

Der Schaltfläche wird die Tastenkombination Alt+C zugewiesen, d.h. wenn der Benutzer Alt+C drückt, wird die Schaltfläche animateClick() aufrufen. Einzelheiten finden Sie in der Dokumentation QShortcut. Um ein echtes kaufmännisches Und anzuzeigen, verwenden Sie '&&'.

Sie können auch eine benutzerdefinierte Schnelltaste mit der Funktion setShortcut() festlegen. Dies ist vor allem für Schaltflächen nützlich, die keinen Text haben 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.

Ein Button kann mittels QPushButton::setDefault() und QPushButton::setAutoDefault() zum Standardbutton in einem Dialog gemacht werden.

QAbstractButton bietet die meisten der für Schaltflächen verwendeten Zustände:

  • isDown() zeigt an, ob die Schaltfläche gedrückt ist.
  • isChecked() zeigt an, ob die Schaltfläche markiert ist. Nur ankreuzbare Schaltflächen können angekreuzt und nicht angekreuzt werden (siehe unten).
  • isEnabled() zeigt an, ob die Schaltfläche vom Benutzer gedrückt werden kann.

    Hinweis: Im Gegensatz zu anderen Widgets akzeptieren Schaltflächen, die von QAbstractButton abgeleitet sind, Maus- und Kontextmenüereignisse, wenn sie deaktiviert sind.

  • 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 durchgeführt wird.
  • setCheckable() legt fest, ob die Schaltfläche eine Umschalttaste ist oder nicht.

Der Unterschied zwischen isDown() und isChecked() ist wie folgt. Wenn der Benutzer auf eine Umschalttaste klickt, um sie zu aktivieren, wird die Taste erst gedrückt und dann in den aktivierten Zustand versetzt. Wenn der Benutzer erneut darauf klickt (um das Häkchen zu entfernen), wird die Schaltfläche zuerst in den gedrückten Zustand und dann in den nicht markierten Zustand versetzt (isChecked() und isDown() sind beide falsch).

QAbstractButton bietet vier Signale:

  1. pressed() wird ausgegeben, wenn die linke Maustaste gedrückt wird, während sich der Mauszeiger innerhalb der Schaltfläche befindet.
  2. released() wird ausgegeben, wenn die linke Maustaste losgelassen wird.
  3. clicked() wird ausgegeben, 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 ausgegeben, wenn sich der Zustand einer Umschalttaste ändert.

Um eine Unterklasse von QAbstractButton zu erstellen, müssen Sie mindestens paintEvent() neu implementieren, um den Umriss der Schaltfläche und ihren Text oder ihre Pixmap zu zeichnen. Es ist im Allgemeinen ratsam, auch sizeHint() zu reimplementieren, und manchmal auch hitButton() (um festzustellen, ob ein Knopfdruck innerhalb des Knopfes ist). Für Schaltflächen mit mehr als zwei Zuständen (wie Schaltflächen mit drei Zuständen) müssen Sie auch checkStateSet() und nextCheckState() neu implementieren.

Siehe auch QButtonGroup.

Dokumentation der Eigenschaften

autoExclusive : bool

Diese Eigenschaft gibt an, ob die automatische Ausschließlichkeit aktiviert ist

Wenn die automatische Ausschließlichkeit aktiviert ist, verhalten sich ankreuzbare Schaltflächen, die zum selben übergeordneten Widget gehören, so, als ob sie Teil derselben exklusiven Schaltflächengruppe wären. In einer exklusiven Schaltflächengruppe kann immer nur eine Schaltfläche geprüft werden; die Prüfung einer anderen Schaltfläche hebt automatisch die Prüfung der zuvor geprüften Schaltfläche auf.

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

autoExclusive ist standardmäßig ausgeschaltet, außer bei Optionsschaltflächen.

Zugriffsfunktionen:

bool autoExclusive() const
void setAutoExclusive(bool)

Siehe auch QRadioButton.

autoRepeat : bool

Diese Eigenschaft gibt an, ob autoRepeat aktiviert ist.

Wenn autoRepeat aktiviert ist, werden die Signale pressed(), released() und clicked() in regelmäßigen Abständen ausgegeben, wenn die Taste gedrückt ist. autoRepeat ist standardmäßig ausgeschaltet. Die Anfangsverzögerung und das Wiederholungsintervall werden durch autoRepeatDelay und autoRepeatInterval in Millisekunden festgelegt.

Hinweis: Wenn eine Taste durch ein Tastenkürzel gedrückt wird, wird die automatische Wiederholung vom System und nicht von dieser Klasse aktiviert und zeitlich festgelegt. Die Signale pressed(), released(), und clicked() werden wie im Normalfall ausgegeben.

Zugriffsfunktionen:

bool autoRepeat() const
void setAutoRepeat(bool)

autoRepeatDelay : int

Diese Eigenschaft enthält die anfängliche Verzögerung der automatischen Wiederholung

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 enthält das Intervall der automatischen Wiederholung

Wenn autoRepeat aktiviert ist, definiert autoRepeatInterval die Länge des Intervalls für die automatische Wiederholung in Millisekunden.

Zugriffsfunktionen:

int autoRepeatInterval() const
void setAutoRepeatInterval(int)

Siehe auch autoRepeat und autoRepeatDelay.

checkable : bool

Diese Eigenschaft gibt an, ob die Schaltfläche überprüfbar ist

Standardmäßig ist die Schaltfläche nicht überprüfbar.

Zugriffsfunktionen:

bool isCheckable() const
void setCheckable(bool)

Siehe auch checked.

checked : bool

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

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

Zugriffsfunktionen:

bool isChecked() const
void setChecked(bool)

Melder-Signal:

void toggled(bool checked)

Siehe auch checkable.

down : bool

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

Wenn diese Eigenschaft true ist, ist die Schaltfläche gedrückt. Die Signale pressed() und clicked() werden nicht ausgegeben, 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 auf der Schaltfläche angezeigte Symbol

Die Standardgröße des Symbols wird durch den GUI-Stil definiert, kann aber über die 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 definiert. Dies ist eine maximale Größe für die Symbole. Kleinere Ikonen werden nicht vergrößert.

Zugriffsfunktionen:

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

shortcut : QKeySequence

Diese Eigenschaft enthält die Mnemonik, die mit der Schaltfläche

Zugriffsfunktionen:

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

text : QString

Diese Eigenschaft enthält den auf der Schaltfläche angezeigten Text

Wenn die Schaltfläche keinen Text enthält, gibt die Funktion text() einen leeren String zurück.

Wenn der Text ein kaufmännisches Und-Zeichen ('&') enthält, wird automatisch eine Tastenkombination für ihn erstellt. Das Zeichen, das auf das '&' folgt, wird als Tastenkürzel verwendet. Alle vorherigen Tastenkombinationen werden überschrieben oder gelöscht, wenn im Text keine Tastenkombination definiert ist. Einzelheiten finden Sie in der Dokumentation QShortcut. Um ein echtes kaufmännisches Und darzustellen, verwenden Sie '&&'.

Es gibt keinen Standardtext.

Zugriffsfunktionen:

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

Dokumentation der Mitgliedsfunktionen

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

Konstruiert eine abstrakte Schaltfläche mit einer parent.

[virtual noexcept] QAbstractButton::~QAbstractButton()

Zerstört 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.

Ein erneuter Aufruf dieser Funktion vor dem Loslassen der Taste setzt den Timer für das Loslassen zurück.

Alle mit einem Klick verbundenen Signale werden entsprechend ausgegeben.

Diese Funktion tut nichts, wenn die Taste gedrückt wird. disabled.

Siehe auch click().

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

Reimplements: QWidget::changeEvent(QEvent *Event).

[virtual protected] void QAbstractButton::checkStateSet()

Dieser virtuelle Handler wird aufgerufen, wenn setChecked() verwendet wird, es sei denn, er wird innerhalb von nextCheckState() aufgerufen. Er ermöglicht es Unterklassen, ihre Schaltflächen-Zwischenstände 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 überprüfbar ist, wird der Zustand der Schaltfläche umgeschaltet.

Diese Funktion tut nichts, wenn die Schaltfläche disabled.

Siehe auch animateClick().

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

Dieses Signal wird ausgegeben, wenn die Schaltfläche aktiviert wird (d. h., wenn sie gedrückt und dann losgelassen wird, während sich der Mauszeiger auf der Schaltfläche befindet), wenn die Tastenkombination eingegeben wird oder wenn click() oder animateClick() aufgerufen wird. Insbesondere wird dieses Signal nicht ausgegeben, wenn Sie setDown(), setChecked() oder toggle() aufrufen.

Wenn die Schaltfläche abhakbar ist, ist checked wahr, wenn die Schaltfläche abgehakt ist, oder falsch, wenn die Schaltfläche nicht abgehakt ist.

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

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

Reimplements: QWidget::event(QEvent *Event).

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

Reimplements: QWidget::focusInEvent(QFocusEvent *event).

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

Reimplements: QWidget::focusOutEvent(QFocusEvent *event).

QButtonGroup *QAbstractButton::group() const

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

Wenn die Schaltfläche zu keiner Gruppe QButtonGroup gehört, gibt diese Funktion nullptr zurück.

Siehe auch QButtonGroup.

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

Gibt true zurück, wenn pos innerhalb des Rechtecks der anklickbaren Schaltfläche liegt; 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 zu bieten.

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

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

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

Reimplements: QWidget::keyReleaseEvent(QKeyEvent *event).

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

Reimplements: QWidget::mouseMoveEvent(QMouseEvent *event).

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

Reimplements: QWidget::mousePressEvent(QMouseEvent *event).

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

Reimplements: QWidget::mouseReleaseEvent(QMouseEvent *event).

[virtual protected] void QAbstractButton::nextCheckState()

Dieser virtuelle Handler wird aufgerufen, wenn eine Schaltfläche angeklickt wird. Die Standardimplementierung ruft setChecked(!isChecked()) auf, wenn die Schaltfläche isCheckable(). Sie erlaubt es Unterklassen, Zwischenzustände von Schaltflächen zu implementieren.

Siehe auch checkStateSet().

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

Reimplements: QWidget::paintEvent(QPaintEvent *event).

[signal] void QAbstractButton::pressed()

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

Siehe auch released() und clicked().

[signal] void QAbstractButton::released()

Dieses Signal wird ausgegeben, wenn die Taste losgelassen wird.

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

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

Reimplements: QObject::timerEvent(QTimerEvent *event).

[slot] void QAbstractButton::toggle()

Schaltet den Zustand einer ankreuzbaren Schaltfläche um.

Siehe auch checked.

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

Dieses Signal wird immer dann ausgegeben, wenn eine ankreuzbare Schaltfläche ihren Zustand ändert. checked ist true, wenn die Schaltfläche angekreuzt ist, oder false, wenn die Schaltfläche nicht angekreuzt 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 ausgegeben wird. Das bedeutet, dass Slots entweder auf das "Aus"-Signal oder auf das "Ein"-Signal reagieren können, das von den Schaltflächen in der Gruppe, deren Zustand sich geändert hat, ausgegeben wird.

Ein Slot, der auf Signale reagiert, die von neu markierten Schaltflächen ausgesendet werden, der aber Signale von nicht markierten Schaltflächen ignoriert, kann beispielsweise nach folgendem Muster implementiert werden:

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

Schaltflächengruppen können mit der Klasse QButtonGroup erstellt werden, und Aktualisierungen der Schaltflächenzustände werden mit dem Signal QButtonGroup::buttonClicked() überwacht.

Hinweis: Meldersignal für die Eigenschaft checked.

Siehe auch checked und clicked().

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