QDialog специально разработан для диалоговых или всплывающих окон.Это диалоги, сгенерированные из вашего основного приложения, полезные для таких вещей, как диалоги открытия / сохранения или информационные сообщения.
QMainWindow - это специальный виджет, который имеет такие вещи, как строка меню, панель инструментов и статусбар встроенный.Этот класс полезен для того, чтобы главное окно приложения соответствовало вашему основному пользовательскому интерфейсу.
QWidget - это основа каждого элемента GUI, так что это универсальный элемент.Он менее специфичен, чем два других класса, но взамен он более гибок.
Вы должны выбрать тот, который лучше всего соответствует тому, что вы создаете.Очевидно, что способ, которым вы пишете код, будет реализован, поскольку это разные классы, но все они по-прежнему QWidgets.