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