Sur cette page

QPushButton Class

Le widget QPushButton permet de créer un bouton de commande. En savoir plus...

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

QCommandLinkButton

Propriétés

Fonctions publiques

QPushButton(QWidget *parent = nullptr)
QPushButton(const QString &text, QWidget *parent = nullptr)
QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)
virtual ~QPushButton()
bool autoDefault() const
bool isDefault() const
bool isFlat() const
QMenu *menu() const
void setAutoDefault(bool)
void setDefault(bool)
void setFlat(bool)
void setMenu(QMenu *menu)

Fonctions publiques réimplémentées

virtual QSize minimumSizeHint() const override
virtual QSize sizeHint() const override

Slots publics

void showMenu()

Fonctions protégées

virtual void initStyleOption(QStyleOptionButton *option) const

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

virtual bool event(QEvent *e) override
virtual void focusInEvent(QFocusEvent *e) override
virtual void focusOutEvent(QFocusEvent *e) override
virtual bool hitButton(const QPoint &pos) const override
virtual void keyPressEvent(QKeyEvent *e) override
virtual void mouseMoveEvent(QMouseEvent *e) override
virtual void paintEvent(QPaintEvent *) override

Description détaillée

Bouton permettant de créer un nouveau document

Le bouton-poussoir, ou bouton de commande, est sans doute le widget le plus couramment utilisé dans toute interface utilisateur graphique. Appuyez (cliquez) sur un bouton pour demander à l'ordinateur d'effectuer une action ou de répondre à une question. Les boutons classiques sont OK, Appliquer, Annuler, Fermer, Oui, Non et Aide.

Un bouton de commande est rectangulaire et affiche généralement une étiquette textuelle décrivant son action. Une touche de raccourci peut être spécifiée en faisant précéder le caractère souhaité d’un « & » dans le texte. Par exemple :

QPushButton *button = new QPushButton("&Download", this);

Dans cet exemple, le raccourci est Alt+D. Consultez la documentation d’ QShortcut pour plus de détails (pour afficher un véritable « & », utilisez « && »).

Les boutons poussoirs affichent une étiquette textuelle et, éventuellement, une petite icône. Celles-ci peuvent être définies à l’aide des constructeurs, puis modifiées ultérieurement via les méthodes setText() et setIcon(). Si le bouton est désactivé, l’apparence du texte et de l’icône sera adaptée au style de l’interface graphique afin de donner au bouton un aspect « désactivé ».

Un bouton émet le signal clicked() lorsqu’il est activé par la souris, la barre d’espace ou un raccourci clavier. Connectez-vous à ce signal pour exécuter l’action du bouton. Les boutons fournissent également des signaux moins couramment utilisés, par exemple pressed() et released().

connect(dispenseButton, &QPushButton::clicked, this, &IceCreamMaker::dispense);

Les boutons de commande des boîtes de dialogue sont, par défaut, des boutons par défaut automatiques, c'est-à-dire qu'ils deviennent automatiquement le bouton par défaut lorsqu'ils reçoivent le focus du clavier. Un bouton par défaut est un bouton qui s’active lorsque l’utilisateur appuie sur la touche Entrée ou Retour dans une boîte de dialogue. Vous pouvez modifier ce comportement à l’aide de la fonction setAutoDefault(). Notez que les boutons par défaut automatiques réservent un peu d’espace supplémentaire, nécessaire pour afficher l’indicateur de bouton par défaut. Si vous ne souhaitez pas cet espace autour de vos boutons, appelez la fonction setAutoDefault(false).

En raison de son importance centrale, le widget « bouton » a évolué au cours de la dernière décennie pour s’adapter à un grand nombre de variantes. Le guide de style de Microsoft présente désormais une dizaine d’états différents pour les boutons de Windows, et le texte laisse entendre qu’il en existe des dizaines d’autres si l’on prend en compte toutes les combinaisons de fonctionnalités.

Les modes ou états les plus importants sont les suivants :

  • Disponible ou non (grisé, désactivé).
  • Bouton standard, bouton à bascule ou bouton de menu.
  • Activé ou désactivé (uniquement pour les boutons à bascule).
  • Par défaut ou normal. Le bouton par défaut d’une boîte de dialogue peut généralement être « cliqué » à l’aide de la touche Entrée ou Retour.
  • Répétition automatique ou non.
  • Enfoncé ou non.

En règle générale, utilisez un bouton lorsque l’application ou la fenêtre de dialogue exécute une action lorsque l’utilisateur clique dessus (comme Appliquer, Annuler, Fermer et Aide) et lorsque le widget est censé avoir une forme rectangulaire large avec une étiquette de texte. Les petits boutons, généralement carrés, qui modifient l’état de la fenêtre plutôt que d’effectuer une action (tels que les boutons situés dans le coin supérieur droit de l QFileDialog) ne sont pas des boutons de commande, mais des boutons d’outils. Qt fournit une classe spéciale (QToolButton) pour ces boutons.

Si vous avez besoin d’un comportement de basculement (voir setCheckable()) ou d’un bouton qui répète automatiquement le signal d’activation lorsqu’il est enfoncé, comme les flèches d’une barre de défilement (voir setAutoRepeat()), un bouton de commande n’est probablement pas ce qu’il vous faut. En cas de doute, utilisez un bouton d’outil.

Remarque : sous macOS, lorsque la largeur d’un bouton-poussoir devient inférieure à 50 ou que sa hauteur devient inférieure à 30, les coins du bouton passent de ronds à carrés. Utilisez la fonction setMinimumSize() pour empêcher ce comportement.

Une variante du bouton de commande est le bouton de menu. Ceux-ci ne proposent pas une seule commande, mais plusieurs, car lorsqu’on clique dessus, ils affichent un menu d’options. Utilisez la méthode setMenu() pour associer un menu contextuel à un bouton.

Il existe d’autres types de boutons : les boutons d’option (voir QRadioButton) et les cases à cocher (voir QCheckBox).

Dans Qt, la classe de base ` QAbstractButton ` fournit la plupart des modes et autres interfaces de programmation, tandis que `QPushButton` fournit la logique d’interface graphique. Consultez ` QAbstractButton ` pour plus d’informations sur l’API.

Voir également QToolButton, QRadioButton et QCheckBox.

Documentation sur les propriétés

autoDefault : bool

Cette propriété indique si le bouton-poussoir est un bouton à valeur par défaut automatique

Si cette propriété est définie sur « true », le bouton est un bouton par défaut automatique.

Dans certains styles d’interface graphique, un bouton par défaut est affiché avec un cadre supplémentaire autour de lui, pouvant aller jusqu’à 3 pixels ou plus. Qt conserve automatiquement cet espace libre autour des boutons par défaut automatiques ; par conséquent, ces derniers peuvent présenter une taille indicative légèrement supérieure.

La valeur par défaut de cette propriété est « true » pour les boutons dont le parent est de type « QDialog » ; dans le cas contraire, elle est par défaut « false ».

Reportez-vous à la propriété « default » pour plus de détails sur l’interaction entre « default » et « auto-default ».

Fonctions d'accès :

bool autoDefault() const
void setAutoDefault(bool)

default : bool

Cette propriété indique si le bouton est le bouton par défaut

Les boutons par défaut et par défaut automatique déterminent ce qui se passe lorsque l'utilisateur appuie sur la touche Entrée dans une boîte de dialogue.

Un bouton dont cette propriété est définie sur « true » (c'est-à-dire le bouton par défaut de la boîte de dialogue) sera automatiquement sélectionné lorsque l'utilisateur appuie sur la touche Entrée, à une exception près : si un bouton « autoDefault » a actuellement le focus, c'est le bouton « autoDefault » qui est sélectionné. Lorsque la boîte de dialogue comporte des boutons « autoDefault » mais aucun bouton par défaut, appuyer sur la touche Entrée actionnera soit le bouton « autoDefault » qui a actuellement le focus, soit, si aucun bouton n’a le focus, le bouton « autoDefault » suivant dans la chaîne de focus.

Dans une boîte de dialogue, un seul bouton à la fois peut être le bouton par défaut. Ce bouton s’affiche alors avec un cadre supplémentaire (selon le style de l’interface graphique).

Le comportement du bouton par défaut n’est disponible que dans les boîtes de dialogue. Les boutons peuvent toujours être activés à l’aide du clavier en appuyant sur la barre d’espace lorsque le bouton a le focus.

Si la propriété « default » est définie sur « false » pour le bouton par défaut actuel alors que la boîte de dialogue est visible, un nouveau bouton par défaut sera automatiquement attribué la prochaine fois qu’un bouton de la boîte de dialogue recevra le focus.

La valeur par défaut de cette propriété est « false ».

Fonctions d’accès :

bool isDefault() const
void setDefault(bool)

flat : bool

Cette propriété indique si la bordure du bouton est en relief

La valeur par défaut de cette propriété est false. Si cette propriété est définie, la plupart des styles n’afficheront pas l’arrière-plan du bouton, sauf si celui-ci est enfoncé. La méthode setAutoFillBackground() peut être utilisée pour s’assurer que l’arrière-plan est rempli à l’aide du pinceau « QPalette::Button ».

Fonctions d'accès :

bool isFlat() const
void setFlat(bool)

Documentation des fonctions membres

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

Crée un bouton sans texte et avec une propriété « parent ».

[explicit] QPushButton::QPushButton(const QString &text, QWidget *parent = nullptr)

Crée un bouton avec l'parent comme élément parent et le texte « text ».

QPushButton::QPushButton(const QIcon &icon, const QString &text, QWidget *parent = nullptr)

Crée un bouton avec un objet ` icon `, un objet ` text` et un objet ` parent`.

Notez que vous pouvez également passer un objet ` QPixmap ` en tant qu’icône (grâce à la conversion de type implicite fournie par le C++).

[virtual noexcept] QPushButton::~QPushButton()

Détruit le bouton-poussoir.

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

Réimplémente : QAbstractButton::event(QEvent *e).

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

Réimplémente : QAbstractButton::focusInEvent(QFocusEvent *e).

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

Réimplémente : QAbstractButton::focusOutEvent(QFocusEvent *e).

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

Réimplémente : QAbstractButton::hitButton(const QPoint &pos) const.

[virtual protected] void QPushButton::initStyleOption(QStyleOptionButton *option) const

Initialisez ` option ` avec les valeurs fournies à l'adresse suivante : QPushButton. Cette méthode est utile pour les sous-classes qui ont besoin d'un ` QStyleOptionButton`, mais ne souhaitent pas renseigner elles-mêmes toutes les informations.

Voir également QStyleOption::initFrom().

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

Réimplémente : QAbstractButton::keyPressEvent(QKeyEvent *e).

Renvoie le menu contextuel associé au bouton ou ` nullptr ` si aucun menu contextuel n'a été défini.

Voir aussi setMenu().

[override virtual] QSize QPushButton::minimumSizeHint() const

Réimplémente une fonction d'accès pour la propriété : QWidget::minimumSizeHint.

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

Réimplémente : QAbstractButton::mouseMoveEvent(QMouseEvent *e).

[override virtual protected] void QPushButton::paintEvent(QPaintEvent *)

Réimplémente : QAbstractButton::paintEvent(QPaintEvent *e).

void QPushButton::setMenu(QMenu *menu)

Associe le menu contextuel « menu » à ce bouton. Cela transforme le bouton en bouton de menu, ce qui, selon certains styles, fera apparaître un petit triangle à droite du texte du bouton.

La propriété du menu n’ est pas transférée au bouton.

Bouton avec menu contextuel

Un bouton doté de menus contextuels, affiché dans le style de widget Fusion.

Voir aussi menu().

[slot] void QPushButton::showMenu()

Affiche (ouvre en fenêtre contextuelle) le menu contextuel associé. Si ce menu n'existe pas, cette fonction ne fait rien. Cette fonction ne revient pas tant que le menu contextuel n'a pas été fermé par l'utilisateur.

[override virtual] QSize QPushButton::sizeHint() const

Réimplémente une fonction d'accès pour la propriété : QWidget::sizeHint.

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