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()`》函数如果这个矩形与给定的矩形相交,则返回《true》。《QRect》类还提供了一个《intersected()`》函数,该函数返回相交矩形,而《united()`》函数返回包围给定矩形和该矩形的矩形。

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

请注意,由于 QRectQRectF 的定义方式,空的 QRectQRectF 在本质上定义方式相同。

最后,QRect 对象不仅可以进行流处理,还可以进行比较。

渲染

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

然后,当使用宽度为 1 像素的笔进行渲染时,QRect 的边界线将渲染到数学矩形边界线的右侧和下方。

当使用宽度为 2 像素的笔进行渲染时,边界线将在数学矩形中间分开。这将在笔设置为偶数像素时发生,而使用奇数像素的笔进行渲染时,多余的像素将渲染到数学矩形的右侧和下方,就像在 1 像素的情况下一样。

qrect-diagram-zero3

qrect-diagram-one4

逻辑表示

宽度为 1 像素的笔

qrect-diagram-two5

qrect-diagram-three6

宽度为 2 像素的笔

宽度为 3 像素的笔

坐标

QRect 类提供了一系列函数,用于返回各种矩形坐标,并允许对这些坐标进行操作。此外,QRect 还提供了一些函数来根据不同的坐标移动矩形。

例如,以下函数: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() . 另一种解决方案是使用 QRectF : QRectF 类使用浮点精度坐标在平面中定义一个矩形,并且 right()bottom() 函数确实返回左右和下坐标。

您还可以使用 adjust() 函数向此矩形的坐标添加偏移量,以及使用 adjusted() 函数根据原始矩形的调整来检索新矩形。如果宽度和高度中的任一个为负,则使用 normalized() 函数以检索一个对角线交换的矩形。

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

约束条件#

QRect 限制在 int 类型的最小和最大值。对可能导致值超出此范围的 QRect 的操作将产生未定义的行为。

另见

QRectF QRegion

__init__(topleft, bottomright)#
参数:

创建一个矩形,其左上角和右下角分别为 topLeftbottomRight,两者都包含在内。

如果 bottomRight 比左上角 topLeft 更高并且在左侧,则定义的矩形将不包括角。

备注

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

__init__()

创建一个空矩形。

另见

isNull()

__init__(left, top, width, height)
参数:
  • left – 整数

  • top – 整数

  • width – 整数

  • height – 整数

创建一个矩形,其左上角为 (x, y),宽度和高度分别为所给值。

另见

setRect()

__init__(topleft, size)
参数:

创建一个矩形,其左上角为 topLeft,大小为所给参数。

__reduce__()#
返回类型:

对象

__repr__()#
返回类型:

对象

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

  • y1 – 整数

  • x2 – 整数

  • y2 – 整数

分别将 dx1dy1dx2dy2 添加到矩形现有坐标上。

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

  • y1 – 整数

  • x2 – 整数

  • y2 – 整数

返回类型:

Q矩形

返回一个新的矩形,其中 dx1dy1dx2dy2 分别添加到矩形当前坐标。

另见

adjust()

bottom()#
返回类型:

整数

返回矩形底部边的 y 坐标。

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

bottomLeft()#
返回类型:

Q点

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

bottomRight()#
返回类型:

Q点

返回矩形右下角的位置。

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

center()#
返回类型:

Q点

返回矩形的中心点。

另见

moveCenter()

contains(x, y)#
参数:
  • x – int

  • y – int

返回类型:

bool

这是一个重载函数。

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

contains(x, y, proper)
参数:
  • x – int

  • y – int

  • proper – bool

返回类型:

bool

这是一个重载函数。

如果点(xy)在矩形内或在矩形边缘上,则返回 true;否则返回 false。如果 propertrue,则该函数仅在点完全位于矩形内时返回 true(即不在边缘上)。

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

  • proper – bool

返回类型:

bool

这是一个重载函数。

如果给定的 rectangle 在此矩形内,则返回 true;否则返回 false。如果 propertrue,则该函数仅在矩形完全位于此矩形内时返回 true(即不在边缘上)。

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

  • proper – bool

返回类型:

bool

如果给定的 point 在矩形内或在矩形边缘上,则返回 true;否则返回 false。如果 propertrue,则该函数仅在给定的 point 完全位于矩形内时返回 true(即不在边缘上)。

另见

intersects()

getCoords()#
返回类型:

PyObject

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

getRect()#
返回类型:

PyObject

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

height()#
返回类型:

整数

返回矩形的宽度。

intersected(other)#
参数:

otherQRect

返回类型:

Q矩形

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

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

另见

intersects() united() operator&=()

intersects(r)#
参数:

rQRect

返回类型:

bool

如果此矩形与给定的矩形相交(即,至少有一个像素在两个矩形中),则返回 true;否则返回 false

可以通过使用 intersected() 函数来检索交集矩形。

另见

contains()

isEmpty()#
返回类型:

bool

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

空矩形具有 left() > right()top() > bottom() 的特性。空矩形无效(即 isEmpty() == ! isValid() )。

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

isNull()#
返回类型:

bool

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

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

isValid()#
返回类型:

bool

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

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

left()#
返回类型:

整数

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

marginsAdded(margins)#
参数:

marginsQMargins

返回类型:

Q矩形

返回一个通过增加 margins 扩展的矩形。

另见

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

marginsRemoved(margins)#
参数:

marginsQMargins

返回类型:

Q矩形

从矩形中移除 margins,从而缩小矩形。

另见

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

moveBottom(pos)#
参数:

pos – int

垂直移动矩形,使得矩形的底部边缘位于指定的 y 坐标。矩形的大小不变。

moveBottomLeft(p)#
参数:

pQPoint

移动矩形,使得矩形的左下角位于指定的 位置。矩形的大小不变。

moveBottomRight(p)#
参数:

pQPoint

移动矩形,使其右下角位于指定的 position。矩形的尺寸保持不变。

moveCenter(p)#
参数:

pQPoint

移动矩形,使其中心点位于指定的 position。矩形的尺寸保持不变。

另见

center()

moveLeft(pos)#
参数:

pos – int

水平移动矩形,使其左边界位于指定的 x 坐标。矩形的尺寸保持不变。

moveRight(pos)#
参数:

pos – int

水平移动矩形,使其右边界位于指定的 x 坐标。矩形的尺寸保持不变。

moveTo(p)#
参数:

pQPoint

移动矩形,使其左上角位于指定的 position

moveTo(x, t)
参数:
  • x – int

  • t - int

移动矩形,使其左上角位于指定的位置 (x, y)。矩形的尺寸保持不变。

moveTop(pos)#
参数:

pos – int

将矩形垂直移动,保持矩形的顶部边沿在给定的 y 坐标处。矩形的尺寸不变。

moveTopLeft(p)#
参数:

pQPoint

将矩形移动,保持矩形的左上角在给定的 位置。矩形的尺寸不变。

moveTopRight(p)#
参数:

pQPoint

将矩形移动,保持矩形的右上角在给定的 位置。矩形的尺寸不变。

normalized()#
返回类型:

Q矩形

返回一个规范化矩形;即宽度为正数,高度也为正数的矩形。

如果 width() < 0,则该函数交换左部和右部角,如果 height() < 0,则还会交换顶部和底部角。同时,角将从非包含性改变为包含性。

__ne__(r2)#
参数:

r2QRect

返回类型:

bool

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

__and__(r)#
参数:

rQRect

返回类型:

Q矩形

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

另见

operator&=() intersected()

__iand__(r)#
参数:

rQRect

返回类型:

Q矩形

与给定的 rectangle 交集此矩形。

另见

intersected() operator&

__add__(margins)#
参数:

marginsQMargins

返回类型:

Q矩形

这是一个重载函数。

返回通过 margins 增长的 rectangle

__add__(margins)
参数:

marginsQMargins

返回类型:

Q矩形

返回通过 margins 增长的 rectangle

__iadd__(margins)#
参数:

marginsQMargins

返回类型:

Q矩形

margins 添加到矩形,使其增长。

另见

marginsAdded() marginsRemoved() operator-=()

__sub__(rhs)#
参数:

rhsQMargins

返回类型:

Q矩形

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

__isub__(margins)#
参数:

marginsQMargins

返回类型:

Q矩形

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

另见

marginsRemoved() operator+=() marginsAdded()

__eq__(r2)#
参数:

r2QRect

返回类型:

bool

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

__or__(r)#
参数:

rQRect

返回类型:

Q矩形

返回本矩形与给定矩形 rectangle 的边框矩形。

另见

operator|=() united()

__ior__(r)#
参数:

rQRect

返回类型:

Q矩形

将本矩形与给定矩形 rectangle 合并。

另见

united() operator|()

right()#
返回类型:

整数

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

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

setBottom(pos)#
参数:

pos – int

将矩形的底部边设置为给定的 y 坐标。可能会更改高度,但绝对不会更改矩形的顶部边。

setBottomLeft(
参数:

pQPoint

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

setBottomRight(p)#
参数:

pQPoint

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

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

  • y1 – 整数

  • x2 – 整数

  • y2 – 整数

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

setHeight(h)#
参数:

h – int

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

setLeft(pos)#
参数:

pos – int

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

等同于 setX() .

setRect(x, y, w, h)#
参数:
  • x – int

  • y – int

  • W – int

  • h – int

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

setRight(pos)#
参数:

pos – int

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

setSize(s)#
参数:

SQSize

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

setTop(pos)#
参数:

pos – int

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

等同于 setY() .

另见

top() moveTop)

setTopLeft(p)#
参数:

pQPoint

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

setTopRight(p)#
参数:

pQPoint

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

setWidth(w)#
参数:

W – int

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

setX(x)#
参数:

x – int

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

等同于 setLeft()

setY(y)#
参数:

y – int

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

等同于 setTop()

size()#
返回类型:

Q大小

返回矩形的尺寸。

静态 span(p1, p2)#
参数:
返回类型:

Q矩形

返回两个点 p1p2 之间的矩形,包括这两个点和之间的所有内容。

toRectF()#
返回类型:

Q浮点矩形

以浮点精度返回此矩形的矩形。

备注

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

另见

toRect()

top()#
返回类型:

整数

返回矩形上边的 y 坐标。相当于 y()

topLeft()#
返回类型:

Q点

返回矩形左上角的位置。

topRight()#
返回类型:

Q点

返回矩形右上角的位置。

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

translate(p)#
参数:

pQPoint

这是一个重载函数。

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

translate(dx, dy)
参数:
  • dx – int

  • dy – int

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

translated(p)#
参数:

pQPoint

返回类型:

Q矩形

这是一个重载函数。

返回一个偏移量offset的矩形副本。在x轴上沿x()移动offset,在y轴上沿y()移动offset,相对于当前位置。

translated(dx, dy)
参数:
  • dx – int

  • dy – int

返回类型:

Q矩形

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

另见

translate()

transposed()#
返回类型:

Q矩形

警告

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

返回一个宽度与高度交换的矩形副本

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

另见

transposed()

united(other)#
参数:

otherQRect

返回类型:

Q矩形

返回本矩形与给定矩形 rectangle 的边框矩形。

width()#
返回类型:

整数

返回矩形的宽度。

x()#
返回类型:

整数

返回矩形左边缘的 x 坐标。相当于 left() .

y()#
返回类型:

整数

返回矩形上边缘的 y 坐标。相当于 top() .