PySide6.QtCore.QRect

class QRect

QRect 类使用整数精度在平面上定义一个矩形。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

矩形通常表示为左上角和大小。QRect的大小(宽度和高度)始终等同于构成其渲染基础的数学矩形。

一个QRect可以通过一组左、上、宽度和高度的整数来构造,或者通过一个QPoint和一个QSize来构造。以下代码创建了两个相同的矩形。

r1 = QRect(100, 200, 11, 16)
r2 = QRect(QPoint(100, 200), QSize(11, 16))

有一个第三种构造函数,它使用左上角和右下角的坐标创建一个QRect,但我们建议您避免使用它。原因是由于历史原因,bottom()right()函数返回的值与矩形的真实右下角有所偏差。

QRect 类提供了一系列函数,这些函数返回矩形的各种坐标,并允许对这些坐标进行操作。QRect 还提供了相对于各种坐标移动矩形的函数。此外,还有一个 moveTo() 函数,该函数移动矩形,使其左上角位于给定的坐标处。或者,translate() 函数相对于当前位置移动矩形给定的偏移量,而 translated() 函数返回此矩形的平移副本。

size() 函数返回矩形的尺寸作为 QSize。尺寸也可以分别使用 width()height() 函数来获取。要操作尺寸,请使用 setSize()setWidth()setHeight() 函数。或者,可以通过应用设置矩形坐标的函数之一来更改尺寸,例如 setBottom()setRight()

contains() 函数用于判断给定点是否在矩形内,而 intersects() 函数如果此矩形与给定矩形相交则返回 trueQRect 类还提供了 intersected() 函数,该函数返回相交的矩形,以及 united() 函数,该函数返回包含给定矩形和此矩形的矩形:

如果 left() > right()top() > bottom(),则 isEmpty() 函数返回 true。请注意,空矩形是无效的:如果 left() <= right() 并且 top() <= bottom(),则 isValid() 函数返回 true。另一方面,空矩形(isNull() == true)的宽度和高度都设置为0。

请注意,由于QRectQRectF的定义方式,一个空的QRect基本上是以与QRectF相同的方式定义的。

最后,QRect 对象也可以被流式传输和比较。

渲染

当使用抗锯齿绘制器时,QRect的边界线将在数学矩形边界线的两侧对称渲染。但是,当使用锯齿绘制器(默认)时,适用其他规则。

然后,当使用一像素宽的笔渲染时,QRect的边界线将渲染在数学矩形边界线的右侧和下方。

当使用两像素宽的笔渲染时,边界线将在中间被数学矩形分割。每当笔设置为偶数像素时都会出现这种情况,而使用奇数像素的笔渲染时,多余的像素将像一像素情况一样渲染到数学矩形的右侧和下方。

qrect-diagram-one4

qrect-diagram-one4

逻辑表示

一像素宽的笔

qrect-diagram-three6

qrect-diagram-three6

两像素宽的笔

三像素宽的笔

坐标

QRect 类提供了一系列函数,这些函数返回矩形的各种坐标,并允许对这些坐标进行操作。QRect 还提供了相对于各种坐标移动矩形的函数。

例如,left()setLeft()moveLeft() 函数作为示例:left() 返回矩形左边界的x坐标,setLeft() 将矩形的左边界设置为给定的x坐标(可能会改变宽度,但永远不会改变矩形的右边界),而 moveLeft() 水平移动整个矩形,将矩形的左边界移动到给定的x坐标,并且保持矩形的大小不变。

../../_images/qrect-coordinates.png

请注意,由于历史原因,bottom()right() 函数返回的值与矩形的真实右下角存在偏差:right() 函数返回 ** left() + width() - 1,而 bottom() 函数返回 ** top() + height() - 1。同样的情况也适用于 bottomRight() 便捷函数返回的点。此外,topRight()bottomLeft() 函数的 x 和 y 坐标分别包含与真实右边缘和底边缘相同的偏差。

我们建议您使用 x() + width()y() + height() 来找到真正的右下角,并避免使用 right()bottom()。另一种解决方案是使用 QRectFQRectF 类使用浮点精度定义平面中的矩形,并且 right()bottom() 函数确实返回右和下的坐标。

也可以使用adjust()函数向此矩形的坐标添加偏移量,以及使用adjusted()函数基于原始矩形的调整来检索一个新矩形。如果宽度或高度为负,请使用normalized()函数来检索一个角点交换的矩形。

此外,QRect 提供了 getCoords() 函数,用于提取矩形左上角和右下角的位置,以及 getRect() 函数,用于提取矩形的左上角、宽度和高度。使用 setCoords()setRect() 函数可以一次性操作矩形的坐标和尺寸。

约束条件

QRect 仅限于 int 类型的最小值和最大值。对 QRect 的操作如果可能导致超出此范围的值,将导致未定义行为。

另请参阅

QRectF QRegion

__init__()

构造一个空矩形。

另请参阅

isNull()

__init__(topleft, bottomright)
Parameters:

使用给定的topLeftbottomRight角构造一个矩形,两者都包括在内。

如果 bottomRight 位于 topLeft 的更高和更左侧,则定义的矩形不包含角落。

注意

为了确保无论相对顺序如何都包含两个点,请使用 span()

__init__(topleft, size)
Parameters:

使用给定的topLeft角和给定的size构造一个矩形。

另请参阅

setTopLeft() setSize()

__init__(left, top, width, height)
Parameters:
  • left – int

  • top – int

  • width – int

  • height – int

构造一个以(x, y)为左上角,并具有给定widthheight的矩形。

另请参阅

setRect()

__reduce__()
Return type:

字符串

__repr__()
Return type:

字符串

adjust(x1, y1, x2, y2)
Parameters:
  • x1 – 整数

  • y1 – 整数

  • x2 – 整数

  • y2 – 整数

dx1dy1dx2dy2分别添加到矩形的现有坐标中。

另请参阅

adjusted() setRect()

adjusted(x1, y1, x2, y2)
Parameters:
  • x1 – 整数

  • y1 – 整数

  • x2 – 整数

  • y2 – 整数

Return type:

QRect

返回一个新的矩形,分别将dx1dy1dx2dy2添加到该矩形的现有坐标中。

另请参阅

adjust()

bottom()
Return type:

整数

返回矩形底边的y坐标。

请注意,由于历史原因,此函数返回 top() + height() - 1;使用 y() + height() 来获取真实的 y 坐标。

bottomLeft()
Return type:

QPoint

返回矩形左下角的位置。请注意,由于历史原因,此函数返回 QPoint ( left() , top() + height() - 1)。

bottomRight()
Return type:

QPoint

返回矩形右下角的位置。

请注意,由于历史原因,此函数返回 QPoint ( left() + width() -1, top() + height() - 1)。

center()
Return type:

QPoint

返回矩形的中心点。

另请参阅

moveCenter()

contains(p[, proper=false])
Parameters:
  • pQPoint

  • proper – 布尔值

Return type:

布尔

如果给定的point在矩形内部或边缘上,则返回true,否则返回false。如果proper为true,则此函数仅在给定的point在矩形内部(即不在边缘上)时返回true

另请参阅

intersects()

contains(r[, proper=false])
Parameters:
  • rQRect

  • proper – 布尔值

Return type:

布尔

这是一个重载函数。

如果给定的rectangle在此矩形内,则返回true。否则返回false。如果proper为true,则此函数仅在rectangle完全在此矩形内(不在边缘)时返回true

contains(x, y)
Parameters:
  • x – 整数

  • y – 整数

Return type:

布尔

这是一个重载函数。

如果点 (x, y) 在此矩形内,则返回 true,否则返回 false

contains(x, y, proper)
Parameters:
  • x – 整数

  • y – 整数

  • proper – 布尔值

Return type:

布尔

这是一个重载函数。

如果点 (x, y) 在矩形内部或边缘上,则返回 true,否则返回 false。如果 proper 为 true,则此函数仅在点完全位于矩形内部(不在边缘上)时返回 true

getCoords()
Return type:

PyObject

提取矩形左上角的位置到 *``x1`` 和 *``y1``,以及右下角的位置到 *``x2`` 和 *``y2``。

另请参阅

setCoords() getRect()

getRect()
Return type:

PyObject

提取矩形左上角的位置到 *``x`` 和 *``y``,并将其尺寸提取到 *``width`` 和 *``height``。

另请参阅

setRect() getCoords()

height()
Return type:

整数

返回矩形的高度。

另请参阅

setHeight() width() size()

intersected(other)
Parameters:

其他QRect

Return type:

QRect

返回此矩形与给定rectangle的交集。请注意,r.intersected(s)等同于r & s

../../_images/qrect-intersect.png

另请参阅

intersects() united() operator&=()

intersects(r)
Parameters:

rQRect

Return type:

布尔

如果此矩形与给定的rectangle相交(即至少有一个像素同时位于两个矩形内),则返回true,否则返回false

可以使用intersected()函数来获取相交矩形。

另请参阅

contains()

isEmpty()
Return type:

布尔

如果矩形为空,则返回 true,否则返回 false

一个空的矩形具有 left() > right()top() > bottom()。一个空的矩形是无效的(即,isEmpty() == ! isValid())。

使用normalized()函数来检索一个角点被交换的矩形。

isNull()
Return type:

布尔

如果矩形是空矩形,则返回true,否则返回false

一个空矩形的宽度和高度都设置为0(即,right() == left() - 1 和 bottom() == top() - 1)。空矩形也是空的,因此是无效的。

另请参阅

isEmpty() isValid()

isValid()
Return type:

布尔

如果矩形有效,则返回 true,否则返回 false

一个有效的矩形具有 left() <= right()top() <= bottom()。请注意,对于无效的矩形,像交集这样的非平凡操作是没有定义的。一个有效的矩形不是空的(即,isValid() == ! isEmpty())。

left()
Return type:

整数

返回矩形左边缘的x坐标。等同于x()

marginsAdded(margins)
Parameters:

边距QMargins

Return type:

QRect

返回一个由margins扩展的矩形。

另请参阅

operator+=() marginsRemoved() operator-=()

marginsRemoved(margins)
Parameters:

边距QMargins

Return type:

QRect

从矩形中移除margins,使其缩小。

另请参阅

marginsAdded() operator+=() operator-=()

moveBottom(pos)
Parameters:

pos – 整数

将矩形垂直移动,使矩形的底边位于给定的y坐标处。矩形的大小保持不变。

moveBottomLeft(p)
Parameters:

pQPoint

移动矩形,将左下角留在给定的position。矩形的大小保持不变。

moveBottomRight(p)
Parameters:

pQPoint

移动矩形,将右下角留在给定的position。矩形的大小保持不变。

moveCenter(p)
Parameters:

pQPoint

移动矩形,将中心点留在给定的position。矩形的大小保持不变。

另请参阅

center()

moveLeft(pos)
Parameters:

pos – 整数

将矩形水平移动,使矩形的左边缘位于给定的x坐标处。矩形的大小保持不变。

moveRight(pos)
Parameters:

pos – 整数

将矩形水平移动,使矩形的右边缘位于给定的x坐标处。矩形的大小保持不变。

moveTo(p)
Parameters:

pQPoint

移动矩形,将左上角留在给定的position处。

moveTo(x, t)
Parameters:
  • x – 整数

  • t – 整数

移动矩形,将左上角放置在给定位置(x, y)。矩形的大小保持不变。

另请参阅

translate() moveTopLeft()

moveTop(pos)
Parameters:

pos – 整数

将矩形垂直移动,使矩形的上边缘位于给定的y坐标处。矩形的大小保持不变。

另请参阅

top() setTop() moveBottom()

moveTopLeft(p)
Parameters:

pQPoint

移动矩形,将左上角放置在给定的position。矩形的大小保持不变。

moveTopRight(p)
Parameters:

pQPoint

移动矩形,使右上角位于给定的position。矩形的大小保持不变。

normalized()
Return type:

QRect

返回一个标准化的矩形;即,一个具有非负宽度和高度的矩形。

如果 width() < 0,函数会交换左右角,如果 height() < 0,函数会交换上下角。同时,角从非包含性变为包含性。

另请参阅

isValid() isEmpty()

__ne__(rhs)
Parameters:

rhsQRect

Return type:

布尔

如果矩形 lhsrhs 不同,则返回 true,否则返回 false

__ne__(rhs)
Parameters:

rhsQRectF

Return type:

布尔

__and__(r)
Parameters:

rQRect

Return type:

QRect

返回此矩形与给定rectangle的交集。如果没有交集,则返回一个空矩形。

另请参阅

operator&=() intersected()

__iand__(r)
Parameters:

rQRect

Return type:

QRect

将此矩形与给定的rectangle相交。

另请参阅

intersected() operator&()

__add__(margins)
Parameters:

边距QMargins

Return type:

QRect

这是一个重载函数。

返回由margins扩展的rectangle

__add__(margins)
Parameters:

边距QMargins

Return type:

QRect

返回由margins扩展的rectangle

__iadd__(margins)
Parameters:

边距QMargins

Return type:

QRect

margins添加到矩形中,使其扩大。

另请参阅

marginsAdded() marginsRemoved() operator-=()

__sub__(rhs)
Parameters:

rhsQMargins

Return type:

QRect

返回由rhs边距缩小的lhs矩形。

__isub__(margins)
Parameters:

边距QMargins

Return type:

QRect

返回一个由margins缩小的矩形。

另请参阅

marginsRemoved() operator+=() marginsAdded()

__eq__(rhs)
Parameters:

rhsQRect

Return type:

布尔

如果矩形 lhsrhs 相等,则返回 true,否则返回 false

__eq__(rhs)
Parameters:

rhsQRectF

Return type:

布尔

__or__(r)
Parameters:

rQRect

Return type:

QRect

返回此矩形与给定rectangle的边界矩形。

另请参阅

operator|=() united()

__ior__(r)
Parameters:

rQRect

Return type:

QRect

将此矩形与给定的rectangle合并。

另请参阅

united() operator|()

right()
Return type:

整数

返回矩形右边界的x坐标。

请注意,由于历史原因,此函数返回 left() + width() - 1;使用 x() + width() 来获取真实的 x 坐标。

setBottom(pos)
Parameters:

pos – 整数

将矩形的底边设置为给定的y坐标。可能会改变高度,但永远不会改变矩形的顶边。

另请参阅

bottom() moveBottom()

setBottomLeft(p)
Parameters:

pQPoint

将矩形的左下角设置为给定的position。可能会改变大小,但永远不会改变矩形的右上角。

setBottomRight(p)
Parameters:

pQPoint

将矩形的右下角设置为给定的position。可能会改变大小,但永远不会改变矩形的左上角。

setCoords(x1, y1, x2, y2)
Parameters:
  • x1 – 整数

  • y1 – 整数

  • x2 – 整数

  • y2 – 整数

将矩形的左上角坐标设置为(x1, y1),并将其右下角坐标设置为(x2, y2)。

另请参阅

getCoords() setRect()

setHeight(h)
Parameters:

h – 整数

将矩形的高度设置为给定的height。底边会改变,但顶边不会改变。

另请参阅

height() setSize()

setLeft(pos)
Parameters:

pos – 整数

将矩形的左边缘设置为给定的x坐标。可能会改变宽度,但永远不会改变矩形的右边缘。

等同于 setX()

另请参阅

left() moveLeft()

setRect(x, y, w, h)
Parameters:
  • x – 整数

  • y – 整数

  • w – 整数

  • h – 整数

将矩形的左上角坐标设置为(x, y),并将其大小设置为给定的widthheight

另请参阅

getRect() setCoords()

setRight(pos)
Parameters:

pos – 整数

将矩形的右边缘设置为给定的x坐标。可能会改变宽度,但永远不会改变矩形的左边缘。

另请参阅

right() moveRight()

setSize(s)
Parameters:

sQSize

将矩形的大小设置为给定的size。左上角不会移动。

setTop(pos)
Parameters:

pos – 整数

将矩形的上边缘设置为给定的y坐标。可能会改变高度,但永远不会改变矩形的下边缘。

等同于 setY()

另请参阅

top() moveTop()

setTopLeft(p)
Parameters:

pQPoint

将矩形的左上角设置为给定的position。可能会改变大小,但永远不会改变矩形的右下角。

另请参阅

topLeft() moveTopLeft()

setTopRight(p)
Parameters:

pQPoint

将矩形的右上角设置为给定的position。可能会改变大小,但永远不会改变矩形的左下角。

另请参阅

topRight() moveTopRight()

setWidth(w)
Parameters:

w – 整数

将矩形的宽度设置为给定的width。右边缘会改变,但左边缘不会改变。

另请参阅

width() setSize()

setX(x)
Parameters:

x – 整数

将矩形的左边缘设置为给定的x坐标。可能会改变宽度,但永远不会改变矩形的右边缘。

等同于 setLeft()

另请参阅

x() setY() setTopLeft()

setY(y)
Parameters:

y – 整数

将矩形的上边缘设置为给定的y坐标。可能会改变高度,但永远不会改变矩形的下边缘。

等同于 setTop()

另请参阅

y() setX() setTopLeft()

size()
Return type:

QSize

返回矩形的大小。

另请参阅

setSize() width() height()

static span(p1, p2)
Parameters:
Return type:

QRect

返回一个跨越两点 p1p2 的矩形,包括这两点及其之间的所有内容。

toRectF()
Return type:

QRectF

返回此矩形为具有浮点精度的矩形。

注意

此函数与QRectFQRect)构造函数一样,保留了矩形的size(),而不是其bottomRight()角。

另请参阅

toRect()

top()
Return type:

整数

返回矩形顶边的y坐标。等同于y()

topLeft()
Return type:

QPoint

返回矩形左上角的位置。

另请参阅

setTopLeft() top() left()

topRight()
Return type:

QPoint

返回矩形右上角的位置。

请注意,由于历史原因,此函数返回 QPoint ( left() + width() -1, top() )。

另请参阅

setTopRight() top() right()

translate(p)
Parameters:

pQPoint

这是一个重载函数。

将矩形 offset 移动。 x() 沿x轴和 offsety() 沿y轴,相对于当前位置。

translate(dx, dy)
Parameters:
  • dx – 整数

  • dy – 整数

将矩形沿x轴移动dx,沿y轴移动dy,相对于当前位置。正值将矩形向右和向下移动。

translated(p)
Parameters:

pQPoint

Return type:

QRect

这是一个重载函数。

返回一个矩形副本,该副本相对于当前位置沿x轴平移offsetx(),沿y轴平移offsety()

translated(dx, dy)
Parameters:
  • dx – 整数

  • dy – 整数

Return type:

QRect

返回一个矩形的副本,该矩形相对于当前位置沿x轴平移dx,沿y轴平移dy。正值将矩形向右和向下移动。

另请参阅

translate()

transposed()
Return type:

QRect

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回一个宽度和高度交换后的矩形副本:

r = {15, 51, 42, 24}
r = r.transposed() # r == {15, 51, 24, 42}

另请参阅

transposed()

united(other)
Parameters:

其他QRect

Return type:

QRect

返回此矩形和给定rectangle的边界矩形。

../../_images/qrect-unite.png

另请参阅

intersected()

width()
Return type:

整数

返回矩形的宽度。

另请参阅

setWidth() height() size()

x()
Return type:

整数

返回矩形左边界的x坐标。等同于left()

另请参阅

setX() y() topLeft()

y()
Return type:

整数

返回矩形上边缘的y坐标。等同于top()

另请参阅

setY() x() topLeft()