QT QMainWindow、QDialog、QWidget之间的区别

本文转自 https://blog.csdn.net/rl529014/article/details/51419126

在 Qt 中,我们将窗口和控件统称为部件(Widget)。

窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。

控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。


QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget。QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。

QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。

如下图所示:
QT QMainWindow、QDialog、QWidget之间的区别


QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等。
如下图所示:
QT QMainWindow、QDialog、QWidget之间的区别


如果是主窗口,就使用 QMainWindow;如果是对话框,就是用 QDialog;如果不确定,或有可能作为*窗口,也有可能嵌入到其他窗口中,那么使用 QWidget。

QMaWindow 与 QDialog 是 QWidget的子类。

需要注意的是,窗口和控件都继承自 QWidget,如果不为控件指定父对象,它就会被作为窗口处理,这时 setWindowTitle() 和 setWindowIcon() 函数就会生效。

上一篇:c – 基于QWidget的Qt小部件


下一篇:c – QWidget外部GUI线程的绘画问题