QRect 类

QRect 类使用整数精度,定义平面矩形。 更多...

头: #include <QRect>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

注意: 此类的所有函数 可重入 .

公共函数

  QRect (int x , int y , int width , int height )
  QRect (const QPoint & topLeft , const QSize & size )
  QRect (const QPoint & topLeft , const QPoint & bottomRight )
  QRect ()
void adjust (int dx1 , int dy1 , int dx2 , int dy2 )
QRect adjusted (int dx1 , int dy1 , int dx2 , int dy2 ) const
int bottom () const
QPoint bottomLeft () const
QPoint bottomRight () const
QPoint center () const
bool contains (const QPoint & point , bool proper = false) const
bool contains (const QRect & rectangle , bool proper = false) const
bool contains (int x , int y ) const
bool contains (int x , int y , bool proper ) const
void getCoords (int * x1 , int * y1 , int * x2 , int * y2 ) const
void getRect (int * x , int * y , int * width , int * height ) const
int height () const
QRect intersected (const QRect & rectangle ) const
bool intersects (const QRect & rectangle ) const
bool isEmpty () const
bool isNull () const
bool isValid () const
int left () const
QRect marginsAdded (const QMargins & margins ) const
QRect marginsRemoved (const QMargins & margins ) const
void moveBottom (int y )
void moveBottomLeft (const QPoint & position )
void moveBottomRight (const QPoint & position )
void moveCenter (const QPoint & position )
void moveLeft (int x )
void moveRight (int x )
void moveTo (int x , int y )
void moveTo (const QPoint & position )
void moveTop (int y )
void moveTopLeft (const QPoint & position )
void moveTopRight (const QPoint & position )
QRect normalized () const
int right () const
void setBottom (int y )
void setBottomLeft (const QPoint & position )
void setBottomRight (const QPoint & position )
void setCoords (int x1 , int y1 , int x2 , int y2 )
void setHeight (int height )
void setLeft (int x )
void setRect (int x , int y , int width , int height )
void setRight (int x )
void setSize (const QSize & size )
void setTop (int y )
void setTopLeft (const QPoint & position )
void setTopRight (const QPoint & position )
void setWidth (int width )
void setX (int x )
void setY (int y )
QSize size () const
CGRect toCGRect () const
int top () const
QPoint topLeft () const
QPoint topRight () const
void translate (int dx , int dy )
void translate (const QPoint & offset )
QRect translated (int dx , int dy ) const
QRect translated (const QPoint & offset ) const
QRect transposed () const
QRect united (const QRect & rectangle ) const
int width () const
int x () const
int y () const
QRect operator& (const QRect & rectangle ) const
QRect & operator&= (const QRect & rectangle )
QRect & operator+= (const QMargins & margins )
QRect & operator-= (const QMargins & margins )
QRect operator| (const QRect & rectangle ) const
QRect & operator|= (const QRect & rectangle )

静态公共成员

QRect span (const QPoint & p1 , const QPoint & p2 )
bool operator!= (const QRect & r1 , const QRect & r2 )
QRect operator+ (const QRect & rectangle , const QMargins & margins )
QRect operator+ (const QMargins & margins , const QRect & rectangle )
QRect operator- (const QRect & lhs , const QMargins & rhs )
QDataStream & operator<< (QDataStream & stream , const QRect & rectangle )
bool operator== (const QRect & r1 , const QRect & r2 )
QDataStream & operator>> (QDataStream & stream , QRect & rectangle )

详细描述

矩形通常以左上角和大小形式表达。大小 (宽度和高度) 对于 QRect 始终相当于形成其渲染基础的数学矩形。

可以按左、上、宽度及高度的一组整数构造 QRect,或从 QPoint QSize 。以下代码创建 2 个恒等矩形。

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

存在使用左上和右下角坐标创建 QRect 的第 3 构造函数,但推荐避免使用它。其基本原理是出于历史原因,值返回通过 bottom () 和 right () 函数会偏离矩形的真正右下角。

QRect 类提供了返回各种矩形坐标,并使之能够操纵这些坐标的一批函数。QRect 还提供了相对各种坐标移动矩形的函数。此外,存在的 moveTo () 函数能移动矩形,使其左上角留在给定坐标处。另外, translate () 函数相对当前位置将矩形移动给定偏移,和 translated () 函数返回此矩形的翻译副本。

size () 函数返回矩形的尺度按 QSize 。还可以单独检索尺度使用 width () 和 height () 函数。要操纵维度使用 setSize (), setWidth () 或 setHeight () 函数。另外,通过应用设置矩形坐标的函数可以改变大小,例如 setBottom () 或 setRight ().

contains () 函数告诉给定点是否在矩形内,和 intersects () 函数返回 true 若此矩形与给定矩形相交。QRect 类还提供 intersected () 函数返回交集矩形,和 united () 函数返回包围给定矩形的矩形,如下所示:

intersected () united ()

isEmpty () 函数返回 true if left () > right () 或 top () > bottom ()。注意,空矩形无效: isValid () 函数返回 true if left () <= right () and top () <= bottom ()。null 矩形 ( isNull () == true) 另一方面,有将宽度和高度两者设为 0。

注意,由于 QRect 和 QRectF 的定义,空 QRect 的定义方式在本质上如同 QRectF .

最后,QRect 对象可以流化及比较。

渲染

当使用 抗锯齿 描绘器,QRect 边界线会对称地渲染在数学矩形边界线的 2 侧。但当使用别名描绘器 (默认) 时,应用其它规则。

那么,当按 1 像素宽钢笔渲染时,QRect 边界线将渲染到数学矩形边界线的右侧和下方。

当按 2 像素宽钢笔渲染时,数学矩形将从中间分割边界线。将是这种情况每当将钢笔设为偶数像素时,当以奇数像素钢笔渲染时,将把备用像素渲染到数学矩形的右侧和下方 (如 1 像素情况)。

逻辑表示 1 像素宽钢笔
2 像素宽钢笔 3 像素宽钢笔

坐标

QRect 类提供了返回各种矩形坐标,并使之能够操纵这些坐标的一批函数。QRect 还提供了相对各种坐标移动矩形的函数。

例如 left (), setLeft () 和 moveLeft () 函数范例: left () 返回矩形左边缘的 X 坐标, setLeft () 将矩形左边缘设为给定 X 坐标 (可能改变宽度,但从不改变矩形的右边缘) 和 moveLeft () 水平移动整个矩形,使矩形左边缘留在给定 X 坐标处且其大小保持不变。

注意,由于历史原因,值返回通过 bottom () 和 right () 函数会偏离矩形的真正右下角: right () 函数返回 left () + width () - 1 bottom () 函数返回 top () + height () - 1 。相同情况是点返回通过 bottomRight () 方便函数。此外,X 和 Y 坐标对于 topRight () 和 bottomLeft () 函数,分别包含来自真正右边缘和底边缘的相同偏离。

推荐使用 x () + width () 和 y () + height () 查找真正右下角,并避免 right () 和 bottom ()。另一解决方案是使用 QRectF QRectF 类使用浮点精度坐标定义平面矩形,和 QRectF::right () 和 QRectF::bottom () 函数 do 返回右坐标和下坐标。

也是可能的,将偏移添加到此矩形的坐标使用 adjust () 函数,及基于原始矩形的调节检索新矩形是使用 adjusted () 函数。若宽度和高度两者任一为负,使用 normalized () 函数以检索角交换矩形。

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

约束

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

另请参阅 QRectF and QRegion .

成员函数文档编制

QRect:: QRect ( int x , int y , int width , int height )

构造矩形采用 ( x , y ) 作为其左上角和给定 width and height .

另请参阅 setRect ().

QRect:: QRect (const QPoint & topLeft , const QSize & size )

构造矩形采用给定 topLeft 角和给定 size .

另请参阅 setTopLeft () 和 setSize ().

QRect:: QRect (const QPoint & topLeft , const QPoint & bottomRight )

构造矩形采用给定 topLeft and bottomRight corners, both included.

bottomRight is to higher and to the left of topLeft , the rectangle defined is instead non-inclusive of the corners.

注意: To ensure both points are included regardless of relative order, use span ().

另请参阅 setTopLeft (), setBottomRight (),和 span ().

QRect:: QRect ()

构造 null 矩形。

另请参阅 isNull ().

void QRect:: adjust ( int dx1 , int dy1 , int dx2 , int dy2 )

添加 dx1 , dy1 , dx2 and dy2 分别到矩形的现有坐标。

另请参阅 adjusted () 和 setRect ().

QRect QRect:: adjusted ( int dx1 , int dy1 , int dx2 , int dy2 ) const

返回新的矩形采用 dx1 , dy1 , dx2 and dy2 分别添加到此矩形的现有坐标。

另请参阅 adjust ().

int QRect:: bottom () const

返回矩形底部边缘的 Y 坐标。

注意:由于历史原因,此函数返回 top () + height () - 1;使用 y () + height () 来检索为 true 的 Y 坐标。

另请参阅 setBottom (), bottomLeft (),和 bottomRight ().

QPoint QRect:: bottomLeft () const

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

另请参阅 setBottomLeft (), bottom (),和 left ().

QPoint QRect:: bottomRight () const

返回矩形右下角的位置。

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

另请参阅 setBottomRight (), bottom (),和 right ().

QPoint QRect:: center () const

返回矩形的中心点。

另请参阅 moveCenter ().

bool QRect:: contains (const QPoint & point , bool proper = false) const

返回 true 若给定 point 在矩形内 (或在矩形边缘上),否则返回 false 。若 proper 为 True,此函数才返回 true 若给定 point is inside 矩形 (即:不在边缘)。

另请参阅 intersects ().

bool QRect:: contains (const QRect & rectangle , bool proper = false) const

这是重载函数。

返回 true 若给定 rectangle 在此矩形内。否则返回 false 。若 proper 为 True,此函数才返回 true rectangle 完全在此矩形内 (不在边缘上)。

bool QRect:: contains ( int x , int y ) const

这是重载函数。

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

bool QRect:: contains ( int x , int y , bool proper ) const

这是重载函数。

返回 true 若点 ( x , y ) 在矩形内 (或在矩形边缘上),否则返回 false 。若 proper 为 True,此函数才返回 true 若点完全在矩形内 (不在边缘上)。

void QRect:: getCoords ( int * x1 , int * y1 , int * x2 , int * y2 ) const

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

另请参阅 setCoords () 和 getRect ().

void QRect:: getRect ( int * x , int * y , int * width , int * height ) const

将矩形左上角位置提取到 * x 和 * y ,和其尺度到 * width 和 * height .

另请参阅 setRect () 和 getCoords ().

int QRect:: height () const

返回矩形的高度。

另请参阅 setHeight (), width (),和 size ().

QRect QRect:: intersected (const QRect & rectangle ) const

返回交集为此矩形和给定 rectangle 。注意, r.intersected(s) 相当于 r & s .

另请参阅 intersects (), united (),和 operator&= ().

bool QRect:: intersects (const QRect & rectangle ) const

返回 true 若此矩形相交给定 rectangle (即:至少有一像素在 2 矩形内),否则返回 false .

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

另请参阅 contains ().

bool QRect:: isEmpty () const

返回 true 若矩形为空,否则返回 false .

空矩形拥有 left () > right () 或 top () > bottom ()。空矩形无效 (即 isEmpty() == ! isValid ()).

使用 normalized () 函数以检索角交换矩形。

另请参阅 isNull (), isValid (),和 normalized ().

bool QRect:: isNull () const

返回 true 若矩形是 null 矩形,否则返回 false .

null 矩形有将宽度和高度两者设为 0 (即 right () == left () - 1 and bottom () == top () - 1)。null 矩形也为空,因此无效。

另请参阅 isEmpty () 和 isValid ().

bool QRect:: isValid () const

返回 true 若矩形有效,否则返回 false .

有效矩形拥有 left () <= right () 和 top () <= bottom ()。注意,非通俗操作 (像交集) 对于无效矩形未定义。有效矩形不为空 (即 isValid() == ! isEmpty ()).

另请参阅 isNull (), isEmpty (),和 normalized ().

int QRect:: left () const

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

另请参阅 setLeft (), topLeft (),和 bottomLeft ().

[since 5.1] QRect QRect:: marginsAdded (const QMargins & margins ) const

返回矩形增长按 margins .

该函数在 Qt 5.1 引入。

另请参阅 operator+= (), marginsRemoved (),和 operator-= ().

[since 5.1] QRect QRect:: marginsRemoved (const QMargins & margins ) const

移除 margins 从矩形,收缩它。

该函数在 Qt 5.1 引入。

另请参阅 marginsAdded (), operator+= (),和 operator-= ().

void QRect:: moveBottom ( int y )

垂直移动矩形,使矩形底边线留在给定 y 坐标。矩形的大小保持不变。

另请参阅 bottom (), setBottom (),和 moveTop ().

void QRect:: moveBottomLeft (const QPoint & position )

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

另请参阅 setBottomLeft (), moveBottom (),和 moveLeft ().

void QRect:: moveBottomRight (const QPoint & position )

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

另请参阅 setBottomRight (), moveRight (),和 moveBottom ().

void QRect:: moveCenter (const QPoint & position )

移动矩形,使中心点位于给定 position 。矩形的大小保持不变。

另请参阅 center ().

void QRect:: moveLeft ( int x )

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

另请参阅 left (), setLeft (),和 moveRight ().

void QRect:: moveRight ( int x )

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

另请参阅 right (), setRight (),和 moveLeft ().

void QRect:: moveTo ( int x , int y )

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

另请参阅 translate () 和 moveTopLeft ().

void QRect:: moveTo (const QPoint & position )

移动矩形,使左上角留在给定 position .

void QRect:: moveTop ( int y )

垂直移动矩形,使矩形上边线留在给定 y 坐标。矩形的大小保持不变。

另请参阅 top (), setTop (),和 moveBottom ().

void QRect:: moveTopLeft (const QPoint & position )

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

另请参阅 setTopLeft (), moveTop (),和 moveLeft ().

void QRect:: moveTopRight (const QPoint & position )

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

另请参阅 setTopRight (), moveTop (),和 moveRight ().

QRect QRect:: normalized () const

返回规范化矩形;即:矩形拥有非负值宽度和高度。

width () < 0 函数交换左右角,和它交换上下角若 height () < 0. The corners are at the same time changed from being non-inclusive to inclusive.

另请参阅 isValid () 和 isEmpty ().

int QRect:: right () const

返回矩形右边的 X 坐标。

注意:由于历史原因,此函数返回 left () + width () - 1;使用 x () + width () 以检索真正 X 坐标。

另请参阅 setRight (), topRight (),和 bottomRight ().

void QRect:: setBottom ( int y )

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

另请参阅 bottom () 和 moveBottom ().

void QRect:: setBottomLeft (const QPoint & position )

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

另请参阅 bottomLeft () 和 moveBottomLeft ().

void QRect:: setBottomRight (const QPoint & position )

将矩形右下角设为给定 position 。可能改变大小,但从不改变矩形左上角。

另请参阅 bottomRight () 和 moveBottomRight ().

void QRect:: setCoords ( int x1 , int y1 , int x2 , int y2 )

将矩形左上角坐标设为 ( x1 , y1 ),和它的右下角坐标到 ( x2 , y2 ).

另请参阅 getCoords () 和 setRect ().

void QRect:: setHeight ( int height )

将矩形高度设为给定 height 。下边缘改变,但不改变上边缘。

另请参阅 height () 和 setSize ().

void QRect:: setLeft ( int x )

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

相当于 setX ().

另请参阅 left () 和 moveLeft ().

void QRect:: setRect ( int x , int y , int width , int height )

将矩形左上角坐标设为 ( x , y ),和它的大小到给定 width and height .

另请参阅 getRect () 和 setCoords ().

void QRect:: setRight ( int x )

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

另请参阅 right () 和 moveRight ().

void QRect:: setSize (const QSize & size )

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

另请参阅 size (), setWidth (),和 setHeight ().

void QRect:: setTop ( int y )

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

相当于 setY ().

另请参阅 top () 和 moveTop ().

void QRect:: setTopLeft (const QPoint & position )

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

另请参阅 topLeft () 和 moveTopLeft ().

void QRect:: setTopRight (const QPoint & position )

将矩形右上角设为给定 position 。可能改变大小,但从不改变矩形的右下角。

另请参阅 topRight () 和 moveTopRight ().

void QRect:: setWidth ( int width )

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

另请参阅 width () 和 setSize ().

void QRect:: setX ( int x )

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

相当于 setLeft ().

另请参阅 x (), setY (),和 setTopLeft ().

void QRect:: setY ( int y )

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

相当于 setTop ().

另请参阅 y (), setX (),和 setTopLeft ().

QSize QRect:: size () const

返回矩形的大小。

另请参阅 setSize (), width (),和 height ().

[static, since 6.0] QRect QRect:: span (const QPoint & p1 , const QPoint & p2 )

Returns a rectangle spanning the two points p1 and p2 , including both and everything in between.

该函数在 Qt 6.0 引入。

[since 5.8] CGRect QRect:: toCGRect () const

创建 CGRect 从 QRect .

该函数在 Qt 5.8 引入。

另请参阅 QRectF::fromCGRect ().

int QRect:: top () const

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

另请参阅 setTop (), topLeft (),和 topRight ().

QPoint QRect:: topLeft () const

返回矩形左上角的位置。

另请参阅 setTopLeft (), top (),和 left ().

QPoint QRect:: topRight () const

返回矩形右上角的位置。

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

另请参阅 setTopRight (), top (),和 right ().

void QRect:: translate ( int dx , int dy )

移动矩形 dx 沿 X 轴和 dy 沿 Y 轴,相对当前位置。正值向右下移动矩形。

另请参阅 moveTopLeft (), moveTo (),和 translated ().

void QRect:: translate (const QPoint & offset )

这是重载函数。

移动矩形 offset . x() 沿 X 轴和 offset . y() 沿 Y 轴,相对当前位置。

QRect QRect:: translated ( int dx , int dy ) const

返回的矩形副本有翻译 dx 沿 X 轴和 dy 沿 Y 轴,相对当前位置。正值向右下移动矩形。

另请参阅 translate ().

QRect QRect:: translated (const QPoint & offset ) const

这是重载函数。

返回的矩形副本有翻译 offset . x() 沿 X 轴和 offset . y() 沿 Y 轴,相对当前位置。

[since 5.7] QRect QRect:: transposed () const

返回交换了宽度和高度的矩形副本:

QRect r = {15, 51, 42, 24};
r = r.transposed(); // r == {15, 51, 24, 42}
					

该函数在 Qt 5.7 引入。

另请参阅 QSize::transposed ().

QRect QRect:: united (const QRect & rectangle ) const

返回边界矩形为此矩形和给定 rectangle .

另请参阅 intersected ().

int QRect:: width () const

返回矩形的宽度。

另请参阅 setWidth (), height (),和 size ().

int QRect:: x () const

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

另请参阅 setX (), y (),和 topLeft ().

int QRect:: y () const

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

另请参阅 setY (), x (),和 topLeft ().

QRect QRect:: operator& (const QRect & rectangle ) const

返回交集为此矩形和给定 rectangle 。返回空矩形若没有交集。

另请参阅 operator&= () 和 intersected ().

QRect &QRect:: operator&= (const QRect & rectangle )

相交此矩形与给定 rectangle .

另请参阅 intersected () 和 operator& ().

[since 5.1] QRect &QRect:: operator+= (const QMargins & margins )

添加 margins 到矩形,增长它。

该函数在 Qt 5.1 引入。

另请参阅 marginsAdded (), marginsRemoved (),和 operator-= ().

[since 5.1] QRect &QRect:: operator-= (const QMargins & margins )

返回矩形的收缩按 margins .

该函数在 Qt 5.1 引入。

另请参阅 marginsRemoved (), operator+= (),和 marginsAdded ().

QRect QRect:: operator| (const QRect & rectangle ) const

返回边界矩形为此矩形和给定 rectangle .

另请参阅 operator|= () 和 united ().

QRect &QRect:: operator|= (const QRect & rectangle )

联合此矩形与给定 rectangle .

另请参阅 united () 和 operator| ().

相关非成员

bool operator!= (const QRect & r1 , const QRect & r2 )

返回 true 若矩形 r1 and r2 不同,否则返回 false .

[since 5.1] QRect operator+ (const QRect & rectangle , const QMargins & margins )

返回 rectangle 增长按 margins .

该函数在 Qt 5.1 引入。

[since 5.1] QRect operator+ (const QMargins & margins , const QRect & rectangle )

这是重载函数。

返回 rectangle 增长按 margins .

该函数在 Qt 5.1 引入。

[since 5.3] QRect operator- (const QRect & lhs , const QMargins & rhs )

返回 lhs rectangle shrunk by the rhs 边距。

该函数在 Qt 5.3 引入。

QDataStream & operator<< ( QDataStream & stream , const QRect & rectangle )

写入给定 rectangle 到给定 stream ,并返回流引用。

另请参阅 序列化 Qt 数据类型 .

bool operator== (const QRect & r1 , const QRect & r2 )

返回 true 若矩形 r1 and r2 相等,否则返回 false .

QDataStream & operator>> ( QDataStream & stream , QRect & rectangle )

读取矩形从给定 stream 进给定 rectangle ,并返回流引用。

另请参阅 序列化 Qt 数据类型 .