Respuestas:
A QWidget
es la clase base para todas las clases dibujables en Qt. Se QWidget
puede mostrar cualquier clase basada en una ventana mostrándola cuando no tiene padre.
A QDialog
se basa en QWidget
, pero está diseñado para mostrarse como una ventana. Siempre aparecerá en una ventana y tiene funciones para que funcione bien con botones comunes en los diálogos (aceptar, rechazar, etc.).
QMainWindow
está diseñado en torno a las necesidades comunes de una ventana principal. Tiene lugares predefinidos para una barra de menú, una barra de estado, una barra de herramientas y otros widgets. No tiene asignaciones integradas para botones como lo QDialog
hace.
QMainWindow
lugar de solo la clase base QWidget
es que QMainWindow
tiene QDockWidget
soporte, mientras que QWidget
por sí solo no lo tiene
QWidget : es una clase base para todos los demás elementos GUI en el módulo QtWidgets. Puede constituir una ventana por sí misma, ser parte de un QLayout o simplemente un miembro de la jerarquía padre-hijo.
QDialog : generalmente se usa para - ¡sorpresa! - muestra un cuadro de diálogo temporal cuando se requiere la entrada del usuario.
QMainWindow : es una clase de conveniencia que puede usarse como la ventana principal de su aplicación. Tiene algunas características agradables incorporadas: una barra de estado, barras de herramientas y una barra de menú