Использование класса QMainWindow для создания оконных приложений в Qt отличается от других классов, например QWidget и QDialog, тем, что QMainWindow предназначен для конкретных задач создания главного окна. stackoverflow.com
Некоторые особенности класса QMainWindow:
- Собственная разметка. doc.qt.io В неё можно добавить панель меню, панели инструментов, закрепляемые виджеты и строку состояния. doc.qt.io
- Отсутствие встроенных возможностей для кнопок. stackoverflow.com В отличие от QDialog, у QMainWindow нет встроенных разрешений для кнопок. stackoverflow.com
- Настройка настраиваемого окна. habr.com Чтобы сделать настраиваемое окно, можно создать подкласс QMainWindow и настроить его в блоке init. habr.com Так окно станет независимым в плане поведения. habr.com
Класс QMainWindow предназначен для использования в качестве окна и устанавливает флаг Qt::Window в конструкторе. doc.qt.io