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
几何参数
这里的几何参数指的是窗口的大小和位置。一个窗口有两套几何参数,一套是窗口外边框所
占的矩形区域,另一套是窗口客户区所占的矩形区域。所谓窗口客户区就是窗口中去除边框和标题栏用来显示内容的区域。
这两套几何参数分别由两个 QRect 型的属性代表,相关的成员函数如下:
const QRect &geometry() const; // 获取客户区几何参数
void setGeometry(int x, int y, int w, int h); // 设置客户取几何参数
void setGeometry(const QRect &rect); // 设置客户区几何参数
QRect frameGeometry() const; // 获取外边框几何参数
这里虽然没有直接设置外边框几何参数的函数,但客户区几何参数变化之后,外边框的几何参
数也会随之变化。设置几何参数可能会使窗口的位置及大小发生变化,这时会发送窗口移动
事件 QMoveEvent,如果大小有变化,还会发送窗口改变大小事件 QResizeEvent,事件
的处理函数分别是 moveEvent 和 resizeEvent。注意这里的坐标都是相对于父窗口的,因此
移动一个窗口并不导致它的所有部件都接收到移动事件。
注意:不要在 moveEvent 或 resizeEvent 两个事件处理函数中设置几何参数,否则将导致无限循环
窗口的几何