欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRect)

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRect)

2025/12/10 20:06:12 来源:https://blog.csdn.net/Humbunklung/article/details/147377186  浏览:    关键词:PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRect)

文章目录

  • 一、构造与初始化方法
  • 二、坐标与尺寸获取
  • 三、坐标与尺寸设置
  • 四、几何运算方法
  • 五、移动与调整方法
  • 六、状态判断方法
  • 七、类型转换方法
  • 八、操作符重载
  • 九、静态方法
  • 十、特殊方法
  • 附录
    • 方法速查表
    • 注意的问题
    • 交集和并集图解

📘 PySide6.QtCore.QRect 使用整数精度定义平面矩形区域,其官方文档参考这里。


一、构造与初始化方法

方法签名说明
QRect()构造空矩形(宽高为0)
QRect(x: int, y: int, width: int, height: int)通过坐标和尺寸构造
QRect(topLeft: QPoint, size: QSize)通过顶点和尺寸构造
QRect(topLeft: QPoint, bottomRight: QPoint)通过对角点构造(不推荐)
# 空矩形
null_rect = QRect()# 标准构造
rect1 = QRect(10, 20, 300, 400)# QPoint+QSize构造
rect2 = QRect(QPoint(10, 20), QSize(300, 400))

二、坐标与尺寸获取

方法返回值说明
left()int左边界x坐标
top()int上边界y坐标
right()int右边界x坐标(含历史原因带来的偏移: left() + width() - 1)
bottom()int下边界y坐标(含历史偏移:top() + height() - 1
width()int实际宽度(可能负数)
height()int实际高度(可能负数)
topLeft()QPoint左上角坐标
bottomRight()QPoint右下角坐标(含偏移)
center()QPoint中心点坐标
size()QSize尺寸对象
rect = QRect(10, 20, 30, 40)
print(rect.right())   # 39 (10+30-1)
print(rect.size())    # QSize(30, 40)
print(rect.top())     # 20
print(rect.width())     # 30
print(rect.height())    # 40
print(rect.x())         # 10
print(rect.y())         # 20
print(rect.bottom())    # 59 (20+40-1)
print(rect.left())      # 10,和x()一样

三、坐标与尺寸设置

方法参数说明
setLeft(x: int)新左边界保持右边界不变
setRight(x: int)新右边界改变宽度
setTop(y: int)新上边界保持下边界不变
setBottom(y: int)新下边界改变高度
setTopLeft(p: QPoint)新顶点改变位置,保持右下
setBottomRight(p: QPoint)新对角点改变尺寸
setWidth(w: int)新宽度右边界自动计算
setHeight(h: int)新高度下边界自动计算
setSize(s: QSize)新尺寸保持左上角不变
setCoords(x1: int, y1: int, x2: int, y2: int)四坐标直接设置四个边界
setRect(x: int, y: int, w: int, h: int)坐标+尺寸重置整个矩形
rect = QRect(10, 20, 30, 40)
rect.setRight(50)      # 新宽度=50-10+1=41
rect.setSize(QSize(20, 60))  # 变为(10,20,20,60)

四、几何运算方法

方法返回值说明
contains(QPoint)bool点是否在矩形内
contains(QRect)bool是否完全包含另一矩形
intersects(QRect)bool是否有重叠区域
intersected(QRect)QRect返回交集区域
united(QRect)QRect返回并集区域
adjusted(dx1: int, dy1: int, dx2: int, dy2: int)QRect调整边界后的新矩形
normalized()QRect标准化后的正尺寸矩形
rect_a = QRect(0, 0, 100, 100)
rect_b = QRect(50, 50, 100, 100)print(rect_a.intersected(rect_b))  # QRect(50,50,50,50)
print(rect_a.contains(QPoint(30,30)))  # True

五、移动与调整方法

方法参数说明
translate(dx: int, dy: int)偏移量相对移动
translated(dx: int, dy: int)偏移量返回移动后的新矩形
moveTo(x: int, y: int)新坐标绝对移动左上角
moveTopLeft(p: QPoint)新顶点移动左上角
adjust(dx1: int, dy1: int, dx2: int, dy2: int)调整量直接修改边界
marginsAdded(QMargins)边距增加外边距后的新矩形
marginsRemoved(QMargins)边距移除外边距后的新矩形
rect = QRect(10, 20, 30, 40)
rect.translate(5, -5)  # 新位置(15,15,30,40)
new_rect = rect.translated(0, 10)  # (15,25,30,40)
new_rect.moveTo(0, 0)   # (0,0,30,40)

六、状态判断方法

方法返回值说明
isEmpty()bool是否面积为零(允许负尺寸)
isNull()bool是否宽高均为0
isValid()bool是否满足 left<=right 且 top<=bottom
rect1 = QRect(10,10,-5,20)
print(rect1.isEmpty())  # True (宽度为负)
print(rect1.isValid())   # Falserect2 = QRect()
print(rect2.isNull())    # True

七、类型转换方法

方法返回值说明
toRectF()QRectF转为浮点矩形
getCoords()(x1, y1, x2, y2)获取四个边界坐标
getRect()(x, y, w, h)获取左上坐标和尺寸
rect = QRect(10, 20, 30, 40)
print(rect.getCoords())  # (10, 20, 39, 59)
print(rect.toRectF())    # QRectF(10.0,20.0,30.0,40.0)

八、操作符重载

操作符等效方法说明
&intersected()交集运算
|united()并集运算
+=marginsAdded()增加边距
-=marginsRemoved()移除边距
==坐标相等判断完全一致
-差集运算返回缩小后的矩形
rect1 = QRect(0,0,100,100)
rect2 = QRect(50,50,100,100)
print(rect1 & rect2)  # QRect(50,50,50,50)
print(rect1 | rect2)  # QRect(0,0,150,150)

九、静态方法

方法说明
span(p1: QPoint, p2: QPoint)创建包含两点的最小矩形
p1 = QPoint(10, 20)
p2 = QPoint(50, 60)
span_rect = QRect.span(p1, p2)  # QRect(10,20,41,41)

十、特殊方法

方法说明
__reduce__()序列化支持
__repr__()字符串表示
transposed()宽高交换后的新矩形
rect = QRect(10, 20, 30, 40)
print(rect.transposed())  # QRect(10,20,40,30)

附录

方法速查表

类别方法
构造QRect(), QRect(x,y,w,h), QRect(QPoint,QSize)
坐标获取left(), right(), top(), bottom(), topLeft(), bottomRight(), center()
尺寸获取width(), height(), size()
坐标设置setLeft(), setRight(), setTop(), setBottom(), setTopLeft(), setBottomRight()
尺寸设置setWidth(), setHeight(), setSize(), setCoords(), setRect()
几何运算contains(), intersects(), intersected(), united(), adjusted(), normalized()
移动调整translate(), translated(), moveTo(), adjust(), marginsAdded(), marginsRemoved()
状态判断isEmpty(), isNull(), isValid()
类型转换toRectF(), getCoords(), getRect()
操作符&, |, +=, -=, ==, -
特殊方法transposed(), span()

注意的问题

实际开发中需特别注意:

  1. 历史坐标偏移问题(right/bottom返回值)
  2. 负尺寸需用normalized()标准化
  3. 移动与调整方法的原地修改返回新对象的区别
  4. 有效性验证应在几何运算前完成

交集和并集图解

  • intersect
    交集
  • united
    并集

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词