QWidget, QMainWindow, QDialog 都是顶级窗口。
ps:一个没有父窗口部件的窗口部件是顶级窗口部件。
QWidget (平时常用)
QWidget是所有具有可视界面类的基类(也是QDialog和QMainWindow的基类),选择QWidget创建的界面对各种界面组件都可以支持(可以嵌入到其它窗体里)。
窗口部件是用户界面的一个原子: 它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己的表现。每一个窗口部件都是矩形,并且它们按Z轴顺序排列的。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
QDialog (对话框实现一些功能时用)
QDialog 是对话框类(是对话框窗口的基类),可建立一个基于对话框的界面。QDialog可以是模态对话框也可以是非模态对话框,可以通过setModel(bool)设置模态或者非模态,默认时为非模态。(不得嵌入到其它窗体里)。
ps:模态弹框会打断用户的当前操作流程,用户不在弹框上操作的话,其余功能都使用不了,非模态弹出则不会打断用户操作。