Réponses:
A QWidgetest la classe de base pour toutes les classes dessinables dans Qt. Toute QWidgetclasse basée sur une base peut être affichée comme une fenêtre en l'affichant lorsqu'elle n'a pas de parent.
A QDialogest basé sur QWidget, mais conçu pour être affiché comme une fenêtre. Il apparaîtra toujours dans une fenêtre, et a des fonctions pour le faire fonctionner correctement avec les boutons communs sur les boîtes de dialogue (accepter, rejeter, etc.).
QMainWindowest conçu autour des besoins communs d'une fenêtre principale. Il a des emplacements prédéfinis pour une barre de menus, une barre d'état, une barre d'outils et d'autres widgets. Il n'a aucune allocation intégrée pour les boutons comme le QDialogfait.
QMainWindowau lieu de la classe de base uniquement QWidgetest qu'elle QMainWindowa un QDockWidgetsupport alors que la QWidgetseule ne le fait pas
QWidget : est une classe de base pour tous les autres éléments de l'interface graphique du module QtWidgets. Il peut constituer une fenêtre en soi, ou faire partie d'un QLayout, ou simplement un membre de la hiérarchie parent-enfant.
QDialog : est généralement utilisé pour - surprendre! - afficher une boîte de dialogue temporaire lorsqu'une entrée utilisateur est requise.
QMainWindow : est une classe de commodité qui peut être utilisée comme fenêtre principale de votre application. Il a quelques fonctionnalités intéressantes intégrées: une barre d'état, des barres d'outils et une barre de menus