web-dev-qa-db-fra.com

Différence entre QPushButton et QToolButton

Je suis nouveau sur Qt et la différence entre QPushButton et QToolButton n'est pas si claire pour moi.

Je sais qu'un QToolButton est généralement utilisé dans un QToolBar et il ne montre généralement qu'une icône, sans texte, mais je ne comprends pas très bien la principale différence entre les deux.

Y a-t-il une différence plus importante? Quand dois-je utiliser QPushButton et quand dois-je utiliser QToolButton?

Je voudrais savoir ceci pour utiliser le bouton le plus approprié, et j'ai besoin d'effectuer des tests GUI et peut-être que cela peut être pertinent.

20
KelvinS

QToolButton fait partie d'un groupe de widgets dans le module QtWidgets qui se concentre autour de QAction: QMenu, QToolBar, etc. QPushButton n'est qu'un bouton. Par conséquent, QToolButton est beaucoup plus complexe sous le capot que QPushButton. Une liste d'exemples (non complète):

  • QToolButton est conçu pour être étroitement intégré à QAction. La modification de l'icône, du texte, etc. de l'action par défaut d'un bouton d'outil se reflète sur le bouton.
  • Vous pouvez modifier la disposition du contenu du bouton de l'outil (icône uniquement, texte uniquement, texte à côté de l'icône, texte sous l'icône).
  • QToolButton prend en charge un type de bouton "divisé" où une zone active de la barre latérale ouvre un menu au lieu de déclencher l'action par défaut.
  • Les boutons d'outils peuvent être créés directement dans un QToolBar en ajoutant une action, tandis que d'autres widgets doivent être explicitement ajoutés.

Notez également que:

  • QToolButton a des marges internes par défaut plus petites que QPushButton, reflétant qu'il est censé être affiché dans une ligne ou une grille serrée. QPushButton est plus pour les boutons de type "Ok"/"Fermer" qui contiennent du texte avec une icône facultative.
  • Un QToolButton devrait généralement avoir une icône. Un QPushButton doit toujours avoir du texte.
23
Jon Harper

Depuis Qt doc: http://doc.qt.io/qt-5/qtoolbutton.html#details

"Un bouton d'outil est un bouton spécial qui permet d'accéder rapidement à des commandes ou des options spécifiques. Contrairement à un bouton de commande normal, un bouton d'outil n'affiche généralement pas d'étiquette de texte, mais affiche une icône à la place."

Lorsque je veux un bouton dans l'interface graphique simple avec seulement une icône, j'utilise QToolButton. Mais quand je veux un bouton classique, j'utilise QPushButton.

Pas de grandes différences,

5
mohabouje