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 : |
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
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 :
- 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.
- released() est émis lorsque le bouton gauche de la souris est relâché.
- 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é.
- 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.
© 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.