持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情
介绍:
QRect类是用四个整形变量来定义了一个矩形,他具有多重初始化的方法。
QRect r1(10, 20, 10, 10);
这四个变量按照顺序所代表的意义分别为x的位置,y的位置,宽度,高度。
QRect r2(QPoint(10, 20), QSize(10, 10));
QPoint是用于构造一个横坐标为10,纵坐标为20的一个对象。
QSize是用于构造一个宽度为10,高度为10的一个对象。
常用函数:
1.void QRect::adjust(int dx1, int dy1, int dx2, int dy2)
各个参数所代表的含义:
dx1代表相对于初始坐标中x的坐标偏移量。
dy1 与上面一样,他所代表的是相对于初始坐标中y的坐标偏移量。
两者的共同在于他们的值可谓正负值,正值代表的是他在矩形范围之内,负值代表他在矩形范围之外。
dx2和dy2是与dx1和dy1相对应的,他们的基点在于右下角的x和y。其他意义都和前两个参数一样。但是要值得注意的是他们的正负值问题,这里的正副职问题是与前两个参数恰恰相反的,负值表示在矩形内,正值表示在矩形外。
2.public bool Contains (double x, double y);
(x,y)该点包含在矩形之内返回TRUE 否则返回FALSE
注意:次函数具有多种重写方式,他的参数可以为QPoint 也可为Rect 也可以为上面函数所定义的那样。
使用方法:rect.contains(1,2);
注意:
QRect在数据存储表示上有一个很大的“历史遗留问题”!,他在获取bottom()和right()函数返回值时,他的值偏离了真正的值(只有在特别严谨的条件下会出问题),例如 :right()函数返回left() + width() – 1,但是实际的值是需要x的坐标+ width()。不过他也有解决方法,就是使用QRectF类,使用这个类下的right()函数。