实际开发中,经常会需要画出形状的需求,如矩形。
QRect 是 PyQt5 中用于表示矩形的类。它包含了矩形四个角的坐标和宽度、高度等信息,可以用于绘制、布局等操作。
以下是 QRect 类的常用方法和属性介绍:
1.构造函数:
- QRect():创建一个空的矩形。
- QRect(x, y, w, h):创建一个矩形,其中左上角坐标为 (x, y),宽度为 w,高度为 h。
- QRect(QPoint topLeft, QPoint bottomRight):创建一个矩形,其中左上角和右下角坐标分别由 topLeft 和 bottomRight 指定。
- QRect(QRect other):创建一个与另一个矩形 other 相同的矩形。
2.成员函数:
- x():返回矩形的左上角 x 坐标。
- y():返回矩形的左上角 y 坐标。
- width():返回矩形的宽度。
- height():返回矩形的高度。
- topLeft():返回矩形的左上角坐标。
- bottomRight():返回矩形的右下角坐标。
- isNull():检查矩形是否为空(宽度或高度是否为零)。
- isEmpty():检查矩形是否为空(宽度或高度是否小于等于零)。
- normalized():返回一个规范化的矩形,即左下角的坐标在前面,右上角的坐标在后面。
3.几何运算:
- operator+ 和 operator+=:将矩形向右下方平移或进行加减运算。
- operator- 和 operator-=:将矩形向左下方平移或进行加减运算。
- operator* 和 operator*=:对矩形的宽度和高度进行缩放或进行乘法运算。
- operator/ 和 operator/=:对矩形的宽度和高度进行缩放或进行除法运算。
4.判断矩形的关系:
- operator== 和 operator!=:比较两个矩形是否相等或不相等。
- contains(QPoint) 和 contains(QRect):判断一个点或另一个矩形是否在当前的矩形内部。
- intersects(QRect):判断当前矩形是否与另一个矩形相交。
5.实用函数:
- adjusted(dx, dy, dw, dh):返回一个新的矩形,通过调整当前矩形的位置和大小得到。可以在 dx 和 dy 上移动位置,在 dw 和 dh 上调整大小。
- normalized():返回一个规范化的矩形,即左下角的坐标在前面,右上角的坐标在后面。
这些方法和属性可以帮助我们创建、操作和处理矩形相关的几何图形,例如在 PyQt5 中使用 QRect 进行绘制、布局、碰撞检测等操作。
使用QPen结合QRect绘制一个矩形:
from PyQt5.QtWidgets import QApplication, QWidget, QRect, QPainter, QPen
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(100, 100, 200, 200)
self.show()
def paintEvent(self, event):
painter = QPainter(self)
rect = QRect(20, 20, 160, 160)
pen = QPen()
pen.setColor(Qt.red)
pen.setWidth(2)
painter.setPen(pen)
painter.drawRect(rect)
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
app.exec_()
在这个示例中,我们创建了一个自定义的QWidget派生类MyWidget,并在其paintEvent()方法中使用QPainter和QPen绘制一个红色矩形。首先,我们创建了一个QRect对象表示矩形的位置和大小。然后,我们创建了一个QPen对象并设置了其颜色和宽度。最后,我们使用QPainter的setPen()方法将QPen对象设置为绘制矩形的笔刷,并使用drawRect()方法绘制矩形。
需要注意的是,在使用QPen绘制形状时,必须将QPen对象设置为QPainter的笔刷,才能使用该笔刷绘制形状。