Sur cette page

QAbstractButton Class

La classe `QAbstractButton` est la classe de base abstraite des widgets de boutons ; elle fournit les fonctionnalités communes à tous les boutons. En savoir plus...

En-tête : #include <QAbstractButton>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite de : QWidget
Hérité 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 poussoirs et les boutons à cocher (à bascule). Les boutons à cocher sont implémentés dans les classes QRadioButton et QCheckBox. Les boutons poussoirs sont implémentés dans les classes QPushButton et QToolButton; celles-ci offrent également un comportement de bascule si nécessaire.

Tout bouton peut afficher une étiquette contenant du texte et une icône. La méthode setText() définit le texte ; la méthode 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 de texte dont la chaîne contient un « & », 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 ; ainsi, lorsque l’utilisateur appuie sur Alt+C, le bouton appelle animateClick(). Consultez la documentation QShortcut pour plus de détails. Pour afficher un véritable signe « & », utilisez « && ».

Vous pouvez également définir un raccourci clavier personnalisé à l’aide de la fonction setShortcut(). Cela s’avère particulièrement utile pour les boutons qui ne comportent aucun texte et qui ne peuvent donc pas bénéficier d’un raccourci automatique.

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

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

Il est possible de définir un bouton comme bouton par défaut dans une boîte de dialogue à l’aide des méthodes 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 cochables peuvent être cochés ou décochés (voir ci-dessous).
  • isEnabled() indique si le bouton peut être cliqué par l'utilisateur.

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

  • setAutoRepeat() détermine si le bouton se répète automatiquement lorsque l'utilisateur le maintient enfoncé. autoRepeatDelay et autoRepeatInterval définissent le mode de répétition automatique.
  • setCheckable() détermine 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 cocher, le bouton passe d’abord à l’ état « enfoncé », puis à 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 à « false »).

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 enfoncé puis relâché, lorsque la touche de raccourci est enfoncée, ou lorsque click() ou animateClick() est appelé.
  4. toggled() est émis lorsque l’état d’un bouton bascule change.

Pour créer une sous-classe de `QAbstractButton`, vous devez réimplémenter au moins ` paintEvent()` afin de dessiner le contour du bouton ainsi que son texte ou son image. Il est généralement conseillé de réimplémenter également ` sizeHint()`, et parfois ` hitButton()` (pour déterminer si un clic sur le bouton se trouve à l’intérieur de celui-ci). Pour les boutons comportant plus de deux états (comme les boutons à trois états), vous devrez également redéfinir les méthodes checkStateSet() et nextCheckState().

Voir également QButtonGroup.

Documentation sur les propriétés

autoExclusive : bool

Cette propriété s'applique que l'exclusivité automatique soit activée ou non

Si l'exclusivité automatique est activée, les boutons cochables appartenant 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 ; cocher un autre bouton décoche automatiquement celui qui était coché auparavant.

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

La propriété autoExclusive est désactivée 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 la répétition automatique est activée, les signaux ` pressed()`, ` released()` et ` clicked()` sont émis à intervalles réguliers lorsque le bouton est enfoncé. La répétition automatique est désactivée 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 synchronisé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 l'option « autoRepeat » est activée, «autoRepeatDelay» définit le délai initial, en millisecondes, avant le déclenchement de la répétition automatique.

Fonctions d'accès :

int autoRepeatDelay() const
void setAutoRepeatDelay(int)

Voir également « autoRepeat » et « autoRepeatInterval ».

autoRepeatInterval : int

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

Si l'option « autoRepeat » est activée, alors « autoRepeatInterval » définit la durée 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 peut être coché

Par défaut, le bouton n'est pas sélectionnable.

Fonctions d'accès :

bool isCheckable() const
void setCheckable(bool)

Voir également checked.

checked : bool

Cette propriété indique si la case est cochée

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 de notification :

void toggled(bool checked)

Voir aussi checkable.

down : bool

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

Si cette propriété est définie sur « true », le bouton est enfoncé. Les signaux « pressed()» et « clicked()» ne sont pas émis si vous définissez cette propriété sur «true». 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 de la taille maximale des 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 ne comporte pas de texte, la fonction text() renvoie une chaîne vide.

Si le texte contient le caractère « & » (ampérande), un raccourci est automatiquement créé pour celui-ci. 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 par le texte. Consultez la documentation d'QShortcut pour plus de détails. Pour afficher un véritable « & », 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)

Crée un bouton abstrait avec une propriété « parent ».

[virtual noexcept] QAbstractButton::~QAbstractButton()

Supprime le bouton.

[slot] void QAbstractButton::animateClick()

Effectue un clic animé : le bouton est enfoncé immédiatement, puis relâché 100 ms plus tard.

Appeler à nouveau cette fonction avant que le bouton ne soit relâché réinitialise le temporisateur 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 également 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 la méthode setChecked() est utilisée, sauf si celle-ci est appelée depuis l'intérieur de la méthode nextCheckState(). Il permet aux sous-classes de réinitialiser les états intermédiaires de leurs boutons.

Voir également nextCheckState().

[slot] void QAbstractButton::click()

Simule un clic.

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

Cette fonction ne fait rien si le bouton est disabled.

Voir également ` animateClick()`.

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

Ce signal est émis lorsque le bouton est activé (c'est-à-dire lorsqu'on appuie dessus puis qu'on le relâche alors que le curseur de la souris se trouve à l'intérieur du bouton), lorsque la touche de raccourci est enfoncée, ou lorsque les fonctions ` click()` ou ` animateClick()` sont appelées. Il est à noter que ce signal n' est pas émis si vous appelez les fonctions ` setDown()`, ` setChecked()` ou ` toggle()`.

Si le bouton est cochable, checked est vrai si le bouton est coché, ou faux s’il ne l’est pas.

Voir également 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'appartient à 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 correspond à l’intégralité du widget. Les sous-classes peuvent réimplémenter cette fonction afin de 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'on clique sur un bouton. L'implémentation par défaut appelle setChecked(!isChecked()) si le bouton isCheckable(). Cela permet aux sous-classes d'implémenter des états intermédiaires pour les boutons.

Voir également 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 l'on appuie sur le bouton.

Voir également released() et clicked().

[signal] void QAbstractButton::released()

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

Voir également pressed(), clicked() et toggled().

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

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

[slot] void QAbstractButton::toggle()

Active ou désactive l'état d'un bouton à cocher.

Voir aussi checked.

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

Ce signal est émis chaque fois qu'un bouton cochable change d'état. ` checked ` est vrai si le bouton est coché, et faux s'il ne l'est pas.

Cela peut résulter d’une action de l’utilisateur, de l’activation d’un slot click() ou de l’appel de la fonction setChecked().

Les états des boutons appartenant à des groupes de boutons exclusifs sont mis à jour avant l’émission de ce signal. Cela signifie que les slots peuvent réagir soit au signal « off », soit au signal « on » émis par les boutons du groupe dont les états ont changé.

Par exemple, un slot qui réagit aux signaux émis par les boutons nouvellement cochés mais qui ignore les signaux provenant des boutons qui ont été décochés peut être implémenté à l’aide du modèle suivant :

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

Les groupes de boutons peuvent être créés à l’aide de la classe ` QButtonGroup `, et les mises à jour des états des boutons sont surveillées via le signal ` QButtonGroup::buttonClicked()`.

Remarque : signalNotifier 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.