QWidget继承于QObject和QPaintDevice,QDialog和QMainWindow则继承于QWidget,QDialog、QMainWindow两者之间没有直接关系。

QWidget

QWidget类是所有用户界面对象的基类。(自定义界面的时候使用)

QMainWindow

QMainWindow类提供一个有菜单条、工具栏、状态条的主应用程序窗口(例如:开发Qt常用的IDE-Visual Studio、Qt Creator等)。(用作应用程序的主窗口)

QMainWindow拥有自己的布局,我们可以使用QMenuBar(菜单栏)、QToolBar(工具栏)、QStatusBar(状态栏)以及QDockWidget(悬浮窗体),布局有一个可由任何种类小窗口所占据的中心区域。
例如:
20160117185134087.jpg

QDialog

QDialog类是对话框窗口的基类。(一般是登录框,或者弹窗类的时候使用)
对话框窗口是一个顶级窗体,主要用于短期任务以及和用户进行简要通讯。

使用原则

1、如果需要嵌入到其他窗体中,则基于QWiget创建。
2、如果是顶级对话框,则基于QDialog创建。
3、如果是主窗体,则基于QMainWindow创建