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: |
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
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:
- pressed() wird ausgegeben, wenn die linke Maustaste gedrückt wird, während sich der Mauszeiger innerhalb der Schaltfläche befindet.
- released() wird ausgegeben, wenn die linke Maustaste losgelassen wird.
- 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.
- 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.
© 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.