Sur cette page

QAbstractButton Class

La classe QAbstractButton est la classe de base abstraite des widgets de boutons, fournissant des fonctionnalités communes aux boutons. Plus d'informations...

En-tête : #include <QAbstractButton>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite : QWidget
Hérités par :

QCheckBox, QPushButton, QRadioButton, et QToolButton

Propriétés

Fonctions publiques

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

Emplacements publics

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

Signaux

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

Fonctions protégées

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

Fonctions protégées réimplémentées

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

Description détaillée

Cette classe implémente un bouton abstrait. Les sous-classes de cette classe gèrent les actions de l'utilisateur et spécifient la manière dont le bouton est dessiné.

QAbstractButton prend en charge à la fois les boutons à pousser et les boutons à cocher (à bascule). Les boutons vérifiables sont implémentés dans les classes QRadioButton et QCheckBox. Les boutons poussoirs sont implémentés dans les classes QPushButton et QToolButton; ces dernières permettent également de les faire basculer si nécessaire.

Tout bouton peut afficher une étiquette contenant du texte et une icône. setText() définit le texte ; setIcon() définit l'icône. Si un bouton est désactivé, son étiquette est modifiée pour lui donner un aspect "désactivé".

Si le bouton est un bouton texte dont la chaîne contient une esperluette ('&'), QAbstractButton crée automatiquement une touche de raccourci. Par exemple :

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

Le raccourci Alt+C est attribué au bouton, c'est-à-dire que lorsque l'utilisateur appuie sur Alt+C, le bouton appelle animateClick(). Voir la documentation de QShortcut pour plus de détails. Pour afficher une véritable esperluette, utilisez '&&'.

Vous pouvez également définir une touche de raccourci personnalisée à l'aide de la fonction setShortcut(). Cette fonction est surtout utile pour les boutons qui n'ont pas de texte et qui ne peuvent donc pas avoir de raccourci automatique.

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

Tous les boutons fournis par Qt XML (QPushButton, QToolButton, QCheckBox, et QRadioButton) peuvent afficher à la fois text et icons.

Un bouton peut devenir le bouton par défaut d'une boîte de dialogue au moyen de QPushButton::setDefault() et QPushButton::setAutoDefault().

QAbstractButton fournit la plupart des états utilisés pour les boutons :

  • isDown() indique si le bouton est enfoncé.
  • isChecked() indique si le bouton est coché. Seuls les boutons contrôlables peuvent être contrôlés et décontrôlés (voir ci-dessous).
  • isEnabled() indique si le bouton peut être enfoncé par l'utilisateur.

    Remarque : contrairement aux autres widgets, les boutons dérivés de QAbstractButton acceptent les événements de la souris et du menu contextuel lorsqu'ils sont désactivés.

  • setAutoRepeat() indique si le bouton sera répété automatiquement si l'utilisateur le maintient enfoncé. autoRepeatDelay et autoRepeatInterval définissent la manière dont la répétition automatique est effectuée.
  • setCheckable() indique si le bouton est un bouton à bascule ou non.

La différence entre isDown() et isChecked() est la suivante. Lorsque l'utilisateur clique sur un bouton à bascule pour le vérifier, le bouton est d'abord pressé puis relâché dans l'état coché. Lorsque l'utilisateur clique à nouveau dessus (pour le décocher), le bouton passe d'abord à l'état enfoncé, puis à l'état décoché (isChecked() et isDown() sont tous deux faux).

QAbstractButton fournit quatre signaux :

  1. pressed() est émis lorsque le bouton gauche de la souris est enfoncé alors que le curseur de la souris se trouve à l'intérieur du bouton.
  2. released() est émis lorsque le bouton gauche de la souris est relâché.
  3. clicked() est émis lorsque le bouton est d'abord pressé puis relâché, lorsque la touche de raccourci est tapée, ou lorsque click() ou animateClick() est appelé.
  4. toggled() est émis lorsque l'état d'un bouton bascule change.

Pour sous-classer QAbstractButton, vous devez réimplémenter au moins paintEvent() pour dessiner le contour du bouton et son texte ou sa pixmap. Il est généralement conseillé de réimplémenter également sizeHint(), et parfois hitButton() (pour déterminer si une pression sur un bouton se trouve à l'intérieur du bouton). Pour les boutons ayant plus de deux états (comme les boutons à trois états), vous devrez également réimplémenter checkStateSet() et nextCheckState().

Voir également QButtonGroup.

Documentation sur les propriétés

autoExclusive : bool

Cette propriété indique si l'auto-exclusivité est activée

Si l'auto-exclusivité est activée, les boutons à cocher qui appartiennent au même widget parent se comportent comme s'ils faisaient partie du même groupe de boutons exclusifs. Dans un groupe de boutons exclusifs, un seul bouton peut être coché à la fois ; le fait de cocher un autre bouton décoche automatiquement le bouton précédemment coché.

Cette propriété n'a aucun effet sur les boutons appartenant à un groupe de boutons.

autoExclusive est désactivé par défaut, sauf pour les boutons radio.

Fonctions d'accès :

bool autoExclusive() const
void setAutoExclusive(bool)

Voir également QRadioButton.

autoRepeat : bool

Cette propriété indique si la fonction autoRepeat est activée

Si autoRepeat est activé, les signaux pressed(), released() et clicked() sont émis à intervalles réguliers lorsque le bouton est enfoncé. autoRepeat est désactivé par défaut. Le délai initial et l'intervalle de répétition sont définis en millisecondes par autoRepeatDelay et autoRepeatInterval.

Remarque : si un bouton est enfoncé à l'aide d'une touche de raccourci, la répétition automatique est activée et programmée par le système et non par cette classe. Les signaux pressed(), released() et clicked() seront émis comme dans le cas normal.

Fonctions d'accès :

bool autoRepeat() const
void setAutoRepeat(bool)

autoRepeatDelay : int

Cette propriété définit le délai initial de la répétition automatique

Si autoRepeat est activé, autoRepeatDelay définit le délai initial en millisecondes avant que la répétition automatique ne commence.

Fonctions d'accès :

int autoRepeatDelay() const
void setAutoRepeatDelay(int)

Voir également autoRepeat et autoRepeatInterval.

autoRepeatInterval : int

Cette propriété définit l'intervalle de répétition automatique

Si autoRepeat est activé, autoRepeatInterval définit la longueur de l'intervalle de répétition automatique en millisecondes.

Fonctions d'accès :

int autoRepeatInterval() const
void setAutoRepeatInterval(int)

Voir également autoRepeat et autoRepeatDelay.

checkable : bool

Cette propriété indique si le bouton est contrôlable

Par défaut, le bouton n'est pas contrôlable.

Fonctions d'accès :

bool isCheckable() const
void setCheckable(bool)

Voir aussi checked.

checked : bool

Cette propriété indique si le bouton est coché

Seuls les boutons pouvant être cochés peuvent l'être. Par défaut, le bouton n'est pas coché.

Fonctions d'accès :

bool isChecked() const
void setChecked(bool)

Signal du notificateur :

void toggled(bool checked)

Voir aussi checkable.

down : bool

Cette propriété indique si le bouton est enfoncé

Si cette propriété vaut true, le bouton est enfoncé. Les signaux pressed() et clicked() ne sont pas émis si vous attribuez la valeur true à cette propriété. La valeur par défaut est false.

Fonctions d'accès :

bool isDown() const
void setDown(bool)

icon : QIcon

Cette propriété contient l'icône affichée sur le bouton

La taille par défaut de l'icône est définie par le style de l'interface graphique, mais peut être ajustée en définissant la propriété iconSize.

Fonctions d'accès :

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

iconSize : QSize

Cette propriété définit la taille de l'icône utilisée pour ce bouton.

La taille par défaut est définie par le style de l'interface graphique. Il s'agit d'une taille maximale pour les icônes. Les icônes plus petites ne seront pas agrandies.

Fonctions d'accès :

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

shortcut : QKeySequence

Cette propriété contient le mnémonique associé au bouton

Fonctions d'accès :

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

text : QString

Cette propriété contient le texte affiché sur le bouton

Si le bouton n'a pas de texte, la fonction text() renvoie une chaîne vide.

Si le texte contient une esperluette ('&'), un raccourci est automatiquement créé. Le caractère qui suit le "&" sera utilisé comme touche de raccourci. Tout raccourci précédent sera écrasé ou effacé si aucun raccourci n'est défini pour le texte. Voir la documentation de QShortcut pour plus de détails. Pour afficher une véritable esperluette, utilisez '&&'.

Il n'y a pas de texte par défaut.

Fonctions d'accès :

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

Documentation sur les fonctions membres

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

Construit un bouton abstrait avec parent.

[virtual noexcept] QAbstractButton::~QAbstractButton()

Détruit le bouton.

[slot] void QAbstractButton::animateClick()

Effectue un clic animé : le bouton est pressé immédiatement et relâché 100 ms plus tard.

Le fait de rappeler cette fonction avant que le bouton ne soit relâché réinitialise la minuterie de relâchement.

Tous les signaux associés à un clic sont émis comme il se doit.

Cette fonction ne fait rien si le bouton est disabled.

Voir aussi click().

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

Réimplémente : QWidget::changeEvent(QEvent *event).

[virtual protected] void QAbstractButton::checkStateSet()

Ce gestionnaire virtuel est appelé lorsque setChecked() est utilisé, à moins qu'il ne soit appelé à partir de nextCheckState(). Il permet aux sous-classes de réinitialiser l'état de leurs boutons intermédiaires.

Voir aussi nextCheckState().

[slot] void QAbstractButton::click()

Effectue un clic.

Tous les signaux habituels associés à un clic sont émis comme il se doit. Si le bouton est contrôlable, son état est modifié.

Cette fonction ne fait rien si le bouton est disabled.

Voir aussi animateClick().

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

Ce signal est émis lorsque le bouton est activé (c'est-à-dire lorsqu'il est enfoncé puis relâché alors que le curseur de la souris se trouve à l'intérieur du bouton), lorsque la touche de raccourci est tapée ou lorsque click() ou animateClick() est appelé. Notamment, ce signal n'est pas émis si vous appelez setDown(), setChecked() ou toggle().

Si le bouton est vérifiable, checked est vrai si le bouton est vérifié, ou faux si le bouton n'est pas vérifié.

Voir aussi pressed(), released() et toggled().

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

Réimplémente : QWidget::event(QEvent *event).

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

Réimplémente : QWidget::focusInEvent(QFocusEvent *event).

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

Réimplémente : QWidget::focusOutEvent(QFocusEvent *event).

QButtonGroup *QAbstractButton::group() const

Renvoie le groupe auquel appartient ce bouton.

Si le bouton n'est membre d'aucun groupe QButtonGroup, cette fonction renvoie nullptr.

Voir également QButtonGroup.

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

Renvoie true si pos se trouve à l'intérieur du rectangle du bouton cliquable ; sinon, renvoie false.

Par défaut, la zone cliquable est l'ensemble du widget. Les sous-classes peuvent réimplémenter cette fonction pour prendre en charge des zones cliquables de formes et de tailles différentes.

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

Réimplémente : QWidget::keyPressEvent(QKeyEvent *event).

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

Réimplémente : QWidget::keyReleaseEvent(QKeyEvent *event).

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

Réimplémente : QWidget::mouseMoveEvent(QMouseEvent *event).

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

Réimplémente : QWidget::mousePressEvent(QMouseEvent *event).

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

Réimplémente : QWidget::mouseReleaseEvent(QMouseEvent *event).

[virtual protected] void QAbstractButton::nextCheckState()

Ce gestionnaire virtuel est appelé lorsqu'un bouton est cliqué. L'implémentation par défaut appelle setChecked( !isChecked()) si le bouton isCheckable(). Elle permet aux sous-classes d'implémenter des états intermédiaires du bouton.

Voir aussi checkStateSet().

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

Réimplémente : QWidget::paintEvent(QPaintEvent *event).

[signal] void QAbstractButton::pressed()

Ce signal est émis lorsque le bouton est enfoncé.

Voir aussi released() et clicked().

[signal] void QAbstractButton::released()

Ce signal est émis lorsque le bouton est relâché.

Voir aussi pressed(), clicked() et toggled().

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

Réimplémente : QObject::timerEvent(QTimerEvent *event).

[slot] void QAbstractButton::toggle()

Bascule l'état d'un bouton à cocher.

Voir aussi checked.

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

Ce signal est émis chaque fois qu'un bouton à cocher change d'état. checked est vrai si le bouton est coché, ou faux s'il est décoché.

Ce changement peut résulter d'une action de l'utilisateur, de l'activation de l'emplacement click() ou de l'appel à setChecked().

Les états des boutons dans les groupes de boutons exclusifs sont mis à jour avant que ce signal ne soit émis. Cela signifie que les slots peuvent agir soit sur le signal "off", soit sur le signal "on" émis par les boutons du groupe dont l'état a changé.

Par exemple, un slot qui réagit aux signaux émis par les boutons nouvellement cochés mais qui ignore les signaux émis par les boutons qui ont été décochés peut être mis en œuvre à l'aide du modèle suivant :

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

Des groupes de boutons peuvent être créés à l'aide de la classe QButtonGroup, et les mises à jour de l'état des boutons peuvent être surveillées à l'aide du signal QButtonGroup::buttonClicked().

Note : Signal de notification pour la propriété checked.

Voir également checked et 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.