1. 1. 窗口坐标系统
  2. 2. QWidget 的几何结构
    1. 客户区几何属性的相关函数
    2. 整体几何属性的常用函数

1. 窗口坐标系统

在 GUI 中,坐标以左上角为原点,从左向右为 x 轴正方向,从上到下为 y 轴正方向,对于 Qt 的窗口内部也有独立的坐标系统,且规则是相同的,只是其原点放在客户区的左上角。而在客户区的周围还有标题栏和边框。如图。
image

2. QWidget 的几何结构

QWidget 的几何结构由客户区和边框构成,如图:
image

客户区几何属性的相关函数

客户区的位置和大小由 QWidget.geometry() 函数获得,该函数返回一个 QRect 实例,由左、上、宽、高组成,分别表示矩形在屏幕中的坐标和大小(关于 QRect 详见拓展)。要改变客户区的大小和位置,常用如下几个函数:

1. 改变客户区面积
QWidget.resize(width: int, heigth: int)
QWidget.resize(size: QSize)

使用这个函数设置大小的窗口,可以通过鼠标改变大小。

2. 获取客户区大小
Qwidget.size()
3. 获取客户区的宽和高
QWidget.width()
QWidget.height()
4. 设置客户区的宽和高
# 固定高度设定宽度
QWidget.setFixedWidth(width: int)
# 固定宽度设定高度
QWidget.setFixedHeight(width: int)

使用上述两个函数设定大小后,将会固定另一个值,且不能用鼠标改变大小。

要设置固定的客户区大小,可以使用下面的函数,经过设定后,不能用鼠标改变大小:

QWidget.setFixedSize(size: QSize)
QWidget.setFixedSize(width: int, height: int)

要同时改变客户区的大小和位置,使用下面的函数:

QWidget.setGeomatry(x: int, y: int, width: int, height: int)
QWidget.setGeomatry(size: QSize)

上面的函数使用后可以再通过鼠标改变大小。

整体几何属性的常用函数

QWidget 的边框和客户区组成了整个窗口,但 Qt 并没有提供设置边框几何属性的函数。通过设置客户区大小和整个窗口的几何属性,就能达到设置边框的效果。
使用下面的函数来获取和设置整个组件的几何属性,这些函数的功能均相对于父窗口:

1. 获取窗口的大小和位置
QWidget.frameGeometry()
2. 获取窗口右上角在屏幕的坐标
QWiget.pos()
3. 设置窗口位置
QWidget.move(x: int, y: int)
QWidget.move(point: QPoint)

顶级窗口没有父窗口,因此该函数设置其在屏幕中的位置。