Відповіді:
A QWidget- базовий клас для всіх рисувальних класів у Qt. Будь-який QWidgetклас на основі може бути показаний як вікно, показуючи його, коли у нього немає батьківського.
A QDialogзаснований наQWidget , але призначений для відображення у вікні. Він завжди відображатиметься у вікні та має функції, щоб він добре працював із загальними кнопками діалогового вікна (прийняти, відхилити тощо).
QMainWindowрозроблено навколо загальних потреб для головного вікна. У ньому є попередньо визначені місця для панелі меню, панелі стану, панелі інструментів та інших віджетів. У ньому немає вбудованих припусків для кнопок, як QDialogце робиться.
QMainWindowзамість просто базового класу QWidget, QMainWindowє QDockWidgetпідтримка, тоді як QWidgetпоодинці немає
QWidget : базовий клас для всіх інших елементів графічного інтерфейсу в модулі QtWidgets. Він може складати вікно сам по собі, або бути частиною QLayout, або просто членом ієрархії батьків-дітей.
QDialog : зазвичай використовується для здивування! - відобразити тимчасове діалогове вікно, коли потрібно ввести користувач.
QMainWindow : клас зручності, який можна використовувати як основне вікно вашої програми. Він має вбудовані деякі приємні функції: панель стану, панелі інструментів та панель меню