Qt中的几何坐标以左上角为原点;水平为x轴,从左向右为正向;垂直为y轴,从上到下为正向
Qt中的GUI组件以左上角进行定位;Qt中的GUI组件可以在坐标系统中进行大小设置
geometry 属性保存组件相对于其父级对象的位置和大小,Qt实际上是以一个长方形来表示组件的位置和大小的,包括左上角的坐标位置、长度和宽带。
注意:单位为像素
QWidget 有两种 setGeometry 方法:
QWidget.setGeometry (self, QRect)
QWidget.setGeometry (self, int ax, int ay, int aw, int ah)
QRect是一个矩形,可以用左、上、宽和高这四个整数构造,因而这两个构造方法实际上效果是一样的!
可以看下图的官方图
- x():左上角的坐标(屏幕左上角是原点(0,0))
- y():左上角的坐标(屏幕左上角是原点(0,0))
- width():客户区的宽度
- height():客户区的高度
- geometry.x():不包括标题栏、边框的客户区
- geometry.y():不包括标题栏、边框的客户区
- geometry.width():客户区的宽度
- geometry.height():客户区的高度
- frameGeometry.x():左上角的坐标
- frameGeometry.y():左上角的坐标
- frameGeometry.width():窗口真正的宽度(包括边框和标题栏)
- frameGeometry.height():窗口真正的高度(包括边框和标题栏)
这些成员函数分为三类:
- QWidget直接提供的成员函数: x()、y()获得窗口左上角的坐标,width()、 height()获得客户区的宽度和高度;
- QWidget的geometry()提供的成员函数:x()、y()获得客户区左上角的坐标,width()、 height()获得客户区的宽度和高度;
- QWidget的frameGeometry()提供的成员函数:x()、y()获得窗口左上角的坐标,width()、 height()获得包含客户区、标题栏和边框在内的整个窗口的宽度和高度。
客户区
改变客户区的面积
以下两个函数改变了长方形的大小,其中第一个参数是宽度,第二个参数是高度。设置了大小的窗口,还可以用鼠标来改变它的大小。
QWidget.resize(width,height)
QWidget.resize(QSize)
获得客户区的大小
Qwidget.size()
获得客户区的宽度和高度
QWidget.width()
QWidget.height()
设置客户区的宽度和高度
使用这个函数,客户区的高度就是固定的,不可以改变,只可以改变宽度。
QWidget.setFixedWidth(int width)
这时候宽度就是固定的,不可以改变,但是可以改变高度。
QWidget.setFixedHeight(int height)
以下这两个函数,高度和宽度都是固定的,不可以通过鼠标来改变窗口的宽度和高度。
QWidget.setFixedSize(QSize size)
QWidget.setFixedSize(int width,int height)
如果要同时改变客户区的大小和位置,需要用到以下函数。
QWidget.setGeometry(int x, int y,int width,int height)
Widget.setGeometry(QRect rect)
QWidget包含边框的常用函数
QWidget包含边框,这个边框有大小和位置,是窗口在屏幕上显示的整个区域。
获得窗口的大小和位置
QWidget.frameGeometry()
设置窗口的位置
QWidget.move(int x,int y)
QWidget.move(QPoint point)
获得窗口左上角的坐标
QWidget.pos()