原文: https://www.cnblogs.com/muyuhu/archive/2012/10/26/2741184.html
QWidget 类代表一般的窗口,其他窗口类都是从 QWidget 类继承出来的。而 QWidget 类则同时继承了 QObject 类 和 QPaintDevice 类,也就是说,窗口类都是 Qt 对象类。这里的 QPaintDevice 类则是所有可绘制的对象的基类。
构造
QWidget 类的构造函数如下:
QWidget(QWidget *parent = 0, Qt::WindowFlags f = 0);
其中参数 parent 指向父窗口,如果这个参数为 0,则窗口就成为一个顶级窗口
参数 f 是构造窗口的标志,主要用于控制窗口的类型和外观等,有以下常用值。
1)Qt::FramelessWindowHint:没有边框的窗口。
2)Qt::WindowStaysOnTopHint:总是最上面的窗口。
3)Qt::CustomizeWindowHint:自定义窗口标题栏,以下标志必须与这个标志一起使用才有效,否则窗口将有默认的标题栏。
4)Qt::WindowTitleHint:显示窗口标题栏。
5)Qt::WindowSystemMenuHint:显示系统菜单。
6)Qt::WindowMinimizeButtonHint:显示最小化按钮。
7)Qt::WindowMaximizeButtonHint:显示最大化按钮。
8)Qt::WindowMinMaxbuttonHint:显示最小化按钮和最大化按钮。
9)Qt::WindowCloseButtonHint:显示关闭按钮。
独立窗口
窗口构造的时候如果有 Qt::Window 标志,那么它就是一个独立窗口,否则就是一个依附于其他独立窗口的窗口部件。顶级窗口一定是独立窗口,但独立窗口不一定是顶级的,它可以有父窗口,当父窗口被析构时它也会随之被析构。独立窗口一般有自己的外边框和标题栏,可以有移动、改变大小等操作。
一个窗口是否为独立窗口可用下面的成员函数来判断:
bool isWindow() const; // 判断是否为独立窗口
下面这个函数可以得到窗口部件所在的独立窗口。
QWidget *window() const; // 所得所在的独立窗口
当然,如果窗口本身就是独立窗口,那么得到的就是自己。
而下面这个函数可以得到窗口的父窗口:
QWidget *parentWidget() const; // 得到父窗口
窗口标题
WindowTitle 属性表示窗口的标题,与之相关的成员函数如下:
QString windowTitle() const; // 获得窗口标题 void setWindowTitle(const QString &text); // 设置窗口标题为 text