Qt - Python - PyQt/PySide - QRect详细解析与方法介绍

QRect是PyQt5用于表示矩形的类,包含构造函数、成员函数、几何运算、关系判断和实用函数。它可以用于绘制、布局等操作。文章提供了使用QRect和QPainter绘制矩形的示例代码,展示了如何创建QRect对象、设置QPen以及使用paintEvent方法绘制图形。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实际开发中,经常会需要画出形状的需求,如矩形。
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的笔刷,才能使用该笔刷绘制形状。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值