156 votes

Quelle est la différence entre Qmainwindow, Qwidget et Qdialog ?

Quelle est la différence entre Qmainwindow, Qwidget et Qdialog dans la programmation Qt ? Sont-ils similaires à java awt et java swing ?

160voto

Caleb Huitt - cjhuitt Points 9764

A QWidget est la classe de base pour toutes les classes de dessinateurs dans Qt. Tout QWidget -peut être affichée comme une fenêtre en la montrant lorsqu'elle n'a pas de parent.

A QDialog est basé sur QWidget mais conçu pour être montré comme une fenêtre. Il apparaîtra toujours dans une fenêtre et possède des fonctions qui lui permettent de fonctionner avec les boutons courants des boîtes de dialogue (accepter, rejeter, etc.).

QMainWindow est conçu autour des besoins courants d'une fenêtre principale. Elle possède des emplacements prédéfinis pour une barre de menu, une barre d'état, une barre d'outils et d'autres widgets. Il n'y a pas d'emplacements intégrés pour des boutons tels que QDialog fait.

1 votes

J'ai cherché cette question mais ce n'est pas vraiment la réponse que j'attendais. Dans QtDesigner, l'utilisation d'une QMainWindow vous donne une barre de menu et une barre d'état. Lorsque vous écrivez le code vous-même et que vous utilisez QMainWindow, vous ne disposez pas de ces éléments. Ou bien vous voulez dire que vous pouvez faire quelque chose comme window.addToolBar("Toolbar") ; et qu'il la placera à un endroit prédéfini sans aucun autre casse-tête ?

1 votes

@MoraruLilian : Je n'utilise pas réellement QMainWindow, donc je ne connais pas les détails. Comme je l'ai dit dans ma réponse, je sais qu'il a des endroits pour eux, donc le faire dans le code pourrait être aussi simple que vous le dites.

10 votes

Caleb_Huitt Il fait ce que je dis. Je voulais juste clarifier si c'est ce que vous essayez de dire. Quoi qu'il en soit, je recommande de toujours utiliser QWidget au lieu de QMainWindow. Vous pouvez rencontrer des problèmes, par exemple pour définir un autre Layout. Si vous voulez définir une nouvelle disposition dans QMainWindow, vous devriez créer un QWidget et le définir comme widget central pour QMainWin et juste après, dans QWidget, vous pourriez setLayout(QLayout *). Alors que vous pourriez éviter des maux de tête supplémentaires juste en utilisant QWidget. Bien sûr, QMainWindow offre cette configuration facile de la ToolBar et de la StatusBar mais vous pouvez le faire vous-même dans QWidget...

12voto

Lalit kumar Points 159

QWidget :est une classe de base pour tous les autres éléments GUI du module QtWidgets. Elle peut constituer une fenêtre par elle-même, ou faire partie d'un QLayout, ou simplement un membre de la hiérarchie parent-enfant.

QDialog :est généralement utilisé pour - surprise ! - afficher une boîte de dialogue temporaire lorsque l'utilisateur doit saisir des données.

QMainWindow :est une classe pratique qui peut être utilisée comme fenêtre principale de votre application. Elle intègre quelques fonctionnalités intéressantes : une barre d'état, des barres d'outils et une barre de menu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X