Respostas:
A QWidget
é a classe base para todas as classes drawable no Qt. Qualquer QWidget
classe com base pode ser mostrada como uma janela, mostrando-a quando ela não tem pai.
A QDialog
é baseado em QWidget
, mas projetado para ser mostrado como uma janela. Ele sempre aparecerá em uma janela e tem funções que o fazem funcionar bem com botões comuns em caixas de diálogo (aceitar, rejeitar, etc.).
QMainWindow
foi projetado em torno das necessidades comuns de uma janela principal. Possui locais predefinidos para uma barra de menu, uma barra de status, uma barra de ferramentas e outros widgets. Ele não tem nenhuma permissão embutida para botões como QDialog
faz.
QMainWindow
vez de apenas a classe base QWidget
é que QMainWindow
tem QDockWidget
suporte, enquanto QWidget
sozinho não
QWidget : é uma classe base para todos os outros elementos da GUI no módulo QtWidgets. Ele pode constituir uma janela por si só, ou ser parte de um QLayout, ou apenas um membro da hierarquia pai-filho.
QDialog : normalmente é usado para - surpreender! - exibe uma caixa de diálogo temporária quando a entrada do usuário é necessária.
QMainWindow : é uma classe de conveniência que pode ser usada como janela principal de seu aplicativo. Possui alguns recursos interessantes integrados: uma barra de status, barras de ferramentas e uma barra de menu