Sur cette page

QPushButton Class

Le widget QPushButton fournit un bouton de commande. Plus d'informations...

En-tête : #include <QPushButton>
CMake : find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake : QT += widgets
Hérite : 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

Emplacements 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 poussoir pour la création d'un nouveau document

Le bouton-poussoir, ou bouton de commande, est peut-être le widget le plus couramment utilisé dans une interface utilisateur graphique. Il suffit d'appuyer (cliquer) sur un bouton pour ordonner à l'ordinateur d'effectuer une action ou de répondre à une question. Les boutons typiques sont OK, Appliquer, Annuler, Fermer, Oui, Non et Aide.

Un bouton de commande est rectangulaire et affiche généralement un texte décrivant son action. Une touche de raccourci peut être spécifiée en faisant précéder le caractère préféré d'une esperluette dans le texte. Par exemple, dans cet exemple, le raccourci est Alt :

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

Dans cet exemple, le raccourci est Alt+D. Pour plus de détails, consultez la documentation de QShortcut (pour afficher une esperluette, utilisez "&&").

Les boutons poussoirs affichent une étiquette textuelle et, éventuellement, une petite icône. Ces éléments peuvent être définis à l'aide des constructeurs et modifiés ultérieurement à l'aide de setText() et setIcon(). Si le bouton est désactivé, l'apparence du texte et de l'icône sera manipulée en fonction du style de l'interface graphique pour que le bouton ait l'air "désactivé".

Un bouton poussoir émet le signal clicked() lorsqu'il est activé par la souris, la barre d'espacement ou un raccourci clavier. Il faut se connecter à ce signal pour effectuer l'action du bouton. Les boutons poussoirs émettent également des signaux moins courants, par exemple pressed() et released().

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

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

Le widget bouton étant si central, il s'est développé et a connu de nombreuses variations au cours de la dernière décennie. Le guide de style de Microsoft indique aujourd'hui une dizaine d'états différents pour les boutons poussoirs de Windows et le texte laisse entendre qu'il y en a des dizaines d'autres lorsque toutes les combinaisons de caractéristiques sont prises en considération.

Les modes ou états les plus importants sont les suivants

  • Disponible ou non (grisé, désactivé).
  • Bouton-poussoir standard, bouton-poussoir à bascule ou bouton de menu.
  • Activé ou désactivé (uniquement pour les boutons-poussoirs à 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.
  • Appuyé ou non.

En règle générale, utilisez un bouton poussoir 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 large et rectangulaire 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 du site QFileDialog) ne sont pas des boutons de commande, mais des boutons d'outil. 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 est inférieure à 50 ou que sa hauteur est inférieure à 30, les coins du bouton passent de ronds à carrés. Utilisez la fonction setMinimumSize() pour éviter ce phénomène.

Le bouton de menu est une variante du bouton de commande. Ceux-ci ne fournissent pas une seule commande, mais plusieurs, puisque lorsqu'on clique dessus, un menu d'options s'affiche. Utilisez la méthode setMenu() pour associer un menu contextuel à un bouton de commande.

D'autres classes de boutons sont les boutons d'option (voir QRadioButton) et les cases à cocher (voir QCheckBox).

Dans Qt GUI, la classe de base QAbstractButton fournit la plupart des modes et autres API, et QPushButton fournit la logique de l'interface graphique. Voir 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 par défaut automatique

Si cette propriété vaut true, le bouton poussoir est un bouton par défaut.

Dans certains styles d'interface graphique, un bouton par défaut est dessiné avec un cadre supplémentaire autour de lui, jusqu'à 3 pixels ou plus. Qt garde automatiquement cet espace libre autour des boutons par défaut, c'est-à-dire que les boutons par défaut peuvent avoir un indice de taille légèrement plus grand.

La valeur par défaut de cette propriété est true (vrai) pour les boutons dont le parent est QDialog; sinon, elle est false (faux).

Voir 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 poussoir est le bouton par défaut

Les boutons par défaut et autodefault 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é vaut true (c'est-à-dire le bouton par défaut de la boîte de dialogue) sera automatiquement enfoncé lorsque l'utilisateur appuiera sur Enter, à une exception près : si un bouton autoDefault est au centre de l'attention, c'est le bouton autoDefault qui sera enfoncé. Lorsque la boîte de dialogue comporte des boutons autoDefault mais pas de bouton par défaut, l'appui sur la touche Entrée permet d'appuyer soit sur le bouton autoDefault qui a le focus, soit, si aucun bouton n'a le focus, sur le bouton autoDefault suivant dans la chaîne de focus.

Dans une boîte de dialogue, un seul bouton-poussoir à la fois peut être le bouton par défaut. Ce bouton est alors affiché avec un cadre supplémentaire (en fonction du style de l'interface graphique).

Le comportement du bouton par défaut n'est fourni que dans les boîtes de dialogue. Les boutons peuvent toujours être cliqués à partir du clavier en appuyant sur la barre d'espacement lorsque le bouton est au premier plan.

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, une nouvelle valeur par défaut sera automatiquement attribuée la prochaine fois qu'un bouton poussoir de la boîte de dialogue sera mis en évidence.

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 relevée

La valeur par défaut de cette propriété est false. Si cette propriété est définie, la plupart des styles ne peindront pas l'arrière-plan du bouton à moins que celui-ci ne soit enfoncé. setAutoFillBackground() peut être utilisé pour s'assurer que l'arrière-plan est rempli à l'aide de la brosse QPalette::Button.

Fonctions d'accès :

bool isFlat() const
void setFlat(bool)

Documentation des fonctions membres

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

Construit un bouton poussoir sans texte et un parent.

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

Construit un bouton poussoir avec le parent parent et le texte text.

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

Construit un bouton poussoir avec un icon et un text, et un parent.

Notez que vous pouvez également passer un objet QPixmap comme icône (grâce à la conversion de type implicite fournie par 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

Initialiser option avec les valeurs de QPushButton. Cette méthode est utile pour les sous-classes qui ont besoin d'un QStyleOptionButton, mais qui ne veulent pas remplir toutes les informations elles-mêmes.

Voir aussi 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 à 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, dans certains styles, produit un petit triangle à droite du texte du bouton.

La propriété du menu n' est pas transférée au bouton de commande.

Bouton poussoir avec menu contextuel

Un bouton poussoir avec des menus déroulants dans le style de widget Fusion.

Voir également menu().

[slot] void QPushButton::showMenu()

Affiche (fait apparaître) 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 à 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.