QT学习:QWidget、QDialog、QMainWindow等窗体类的区别和用途
各窗体之间继承的关系
- QWidget 直接继承于 QObject
- QDialog\QMainWindow 继承于 QWidget
- 其他继承于 QWidget 的窗体类还有 QSplashScreen、QMdiSubWindow 和 QDesktopWidget
- 还有一个窗口类 QWindow ,它同时继承于 QObject 和 QSurface
继承关系如下图所示:
这些窗体类的特点和用途
- QWidget:在没有指定父容器时可作为独立的窗口,指定父容器后可以作为容器的内部组件
- QDialog:用于设计对话框,以独立窗口显示
- QMainWindow:用于设计带有菜单栏、工具栏、状态栏的主窗口,一般以独立窗口显示
- QSplashScreen:一般在大型应用程序启动时会显示一个启动画面,这个启动画面即Splash窗口
- 特点:Splash窗口一般被设计为一个无边对话框,在Windows任务栏不显示当前窗口的图标信息。
- 我们通常在Splash窗口中只显示一个图片,并展示软件的信息等
- 使用场景:Splash窗口显示的时候,程序一般在后台做一些比较耗时的启动准备工作,等到软件的准备工作完成之后,Splash窗口就会关闭,然后软件的主窗口显示出来
- QMdiSubWindow:用于为QMdiArea提供一个子窗体,用于MDI(多文档)应用程序的设计。
- QDesktopWidget:具有多个显卡和多个显示器的系统具有多个桌面,这个类提供用户桌面信息,如屏幕个数、每个屏幕的大小等。
- QWindow:通过底层的窗口系统表示一个窗口的类,一般作为一个父容器的嵌入式窗体,不作为独立窗体。