QPolygon类
QPolygon类使用整型精度提供一系列点。更多信息...
头文件 | #include <QPolygon> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake | QT += gui |
继承自 | QList |
- 所有成员列表,包括继承成员
- QPolygon是绘制类和隐式共享类的一部分。
注意:本类中的所有函数都是可重入的。
公共函数
QPolygon() | |
QPolygon(const QList<QPoint> &points) | |
QPolygon(const QRect &rectangle, bool closed = false) | |
QRect | boundingRect() const |
bool | containsPoint(const QPoint &point, Qt::FillRule fillRule) const |
QPolygon | intersected(const QPolygon &r) const |
bool | intersects(const QPolygon &p) const |
void | point(int index, int *x, int *y) const |
QPoint | point(int index) const |
void | putPoints(int index, int nPoints, int firstx, int firsty, ...) |
void | putPoints(int index, int nPoints, const QPolygon &fromPolygon, int fromIndex = 0) |
void | setPoint(int index, int x, int y) |
void | setPoint(int index, const QPoint &point) |
void | setPoints(int nPoints, const int *points) |
void | setPoints(int nPoints, int firstx, int firsty, ...) |
QPolygon | subtracted(const QPolygon &r) const |
void | swap(QPolygon &other) |
(自6.4起) QPolygonF | toPolygonF() const |
void | translate(int dx, int dy) |
void | translate(const QPoint &offset) |
QPolygon | translated(int dx, int dy) const |
QPolygon | translated(const QPoint &offset) const |
QPolygon | united(const QPolygon &r) const |
QVariant | operator QVariant() const |
相关非成员
QDataStream & | operator<<(QDataStream &stream, const QPolygon &polygon) |
QDataStream & | operator>>(QDataStream &stream, QPolygon &polygon) |
详细说明
A QPolygon对象是QList<QPoint>。向QPolygon添加点的最简单方法是使用QList的流操作符,如下所示
除了QList提供的函数外,QPolygon还提供了一些特定于点的函数。
可以通过将索引传递给point()函数来检索多边形的每个点。为了填充多边形,QPolygon提供了setPoint()函数来设置给定索引处的点,setPoints()函数来设置多边形中的所有点(调整大小以匹配给定点数),以及putPoints()函数,它将一定数量的给定点从指定索引复制到多边形中(如果需要,调整多边形大小)。
QPolygon提供了几何函数的boundingRect()和translate()函数。使用QTransform::map()函数进行更通用的QPolygon变换。
QPolygon类是隐式共享的。
成员函数文档
[constexpr noexcept]
QPolygon::QPolygon()
构造一个没有任何点的多边形。
另请参阅QList::isEmpty()。
QPolygon::QPolygon(const QList<QPoint> &points)
构造一个包含指定points的多边形。
另请参阅setPoints()。
QPolygon::QPolygon(const QRect &rectangle, bool closed = false)
从一个给定的rectangle构造一个多边形。如果closed为false,则多边形仅包含矩形的四个点,顺时针排列;否则,多边形的第五个点将设置为rectangle.topLeft()。
请注意,矩形的右下角位于(rectangle.x() + rectangle.width(), rectangle.y() + rectangle.height())。
另请参阅setPoints()。
QRect QPolygon::boundingRect() const
返回多边形的边界矩形,如果多边形为空,则返回QRect(0, 0, 0, 0)。
另请参阅QList::isEmpty()。
bool QPolygon::containsPoint(const QPoint &point, Qt::FillRule fillRule) const
如果给定的point根据指定的fillRule在多边形内部,则返回true
;否则返回false
。
QPolygon QPolygon::intersected(const QPolygon &r) const
返回一个多边形,它是此多边形和r的交集。
对多边形的集合操作将多边形视为区域。非封闭多边形将隐式视为封闭。
另请参阅intersects()。
bool QPolygon::intersects(const QPolygon &p) const
如果当前多边形在任何点上与给定的多边形 p 相交,则返回 true
。如果当前多边形包含 p 的任何部分或被其包含,也返回 true
。
对多边形的集合操作将多边形视为区域。非封闭多边形将隐式视为封闭。
另请参阅intersected。
void QPolygon::point(int index, int *x, int *y) const
从给定 index 的点中提取坐标到 *x 和 *y(如果它们是有效的指针)。
另请参阅setPoint。
QPoint QPolygon::point(int index) const
这是一个重载函数。
返回给定 index 的点。
void QPolygon::putPoints(int index, int nPoints, int firstx, int firsty, ...)
将从变量参数列表中的 nPoints 个点复制到此多边形中的给定 index。
点由一系列整数组成,从 firstx 开始,然后是 firsty,以此类推。如果 index+nPoints
大于多边形的当前大小,则调整多边形的大小。
以下示例代码通过将从 1 扩展到 3 个点来创建具有三个点(4,5),(6,7)和(8,9)的多边形
以下代码具有相同的结果,但这里 putPoints() 函数是覆盖而不是扩展
QPolygon polygon(3); polygon.putPoints(0, 3, 4,5, 0,0, 8,9); polygon.putPoints(1, 1, 6,7);
另请参阅setPoints()。
void QPolygon::putPoints(int index, int nPoints, const QPolygon &fromPolygon, int fromIndex = 0)
这是一个重载函数。
将从 fromPolygon 中的给定 fromIndex(默认为 0)复制 nPoints 个点到此多边形的指定 index。例如
QPolygon polygon1; polygon1.putPoints(0, 3, 1,2, 0,0, 5,6); // polygon1 is now the three-point polygon(1,2, 0,0, 5,6); QPolygon polygon2; polygon2.putPoints(0, 3, 4,4, 5,5, 6,6); // polygon2 is now (4,4, 5,5, 6,6); polygon1.putPoints(2, 3, polygon2); // polygon1 is now the five-point polygon(1,2, 0,0, 4,4, 5,5, 6,6);
void QPolygon::setPoint(int index, int x, int y)
将给定 index 的点设置为坐标为 x,y 的点。
另请参阅point,putPoints 和 setPoints。
void QPolygon::setPoint(int index, const QPoint &point)
这是一个重载函数。
将给定 index 的点设置为给定的 point。
void QPolygon::setPoints(int nPoints, const int *points)
将多边形大小调整到 nPoints,并用给定的 points 填充它。
以下示例代码通过创建两个点(10, 20)和(30, 40)来创建多边形
static const int points[] = { 10, 20, 30, 40 }; QPolygon polygon; polygon.setPoints(2, points);
void QPolygon::setPoints(int nPoints, int firstx, int firsty, ...)
这是一个重载函数。
将多边形调整为包含nPoints个点的形状,并用变量参数列表中指定的点填充它。这些点作为一系列整数给出,从firstx开始,然后是firsty,依此类推。
以下示例代码通过创建两个点(10, 20)和(30, 40)来创建多边形
QPolygon polygon; polygon.setPoints(2, 10, 20, 30, 40);
QPolygon QPolygon::subtracted(const QPolygon &r) const
返回从本多边形中减去r后的多边形。
对多边形的集合操作将多边形视为区域。非封闭多边形将隐式视为封闭。
[noexcept]
void QPolygon::swap(QPolygon &other)
将多边形other与本多边形交换。这个操作非常快且从不失败。
[since 6.4]
QPolygonF QPolygon::toPolygonF() const
返回本多边形作为具有浮点精度多边形的形式。
此函数自 Qt 6.4 版本引入。
另请参阅QPolygonF::toPolygon。
void QPolygon::translate(int dx, int dy)
通过 (dx, dy) 将多边形中的所有点平移。
另请参阅translated。
void QPolygon::translate(const QPoint &offset)
这是一个重载函数。
通过给定的offset将多边形中的所有点平移。
另请参阅translated。
QPolygon QPolygon::translated(int dx, int dy) const
返回一个通过 (dx, dy) 平移的多边形副本。
另请参阅translate。
QPolygon QPolygon::translated(const QPoint &offset) const
这是一个重载函数。
返回一个给定offset平移的多边形副本。
另请参阅translate。
QPolygon QPolygon::united(const QPolygon &r) const
返回一个由本多边形和r组成的并集多边形。
对多边形的集合操作将多边形视为区域,并隐式闭合多边形。
另请参阅intersected() 和 subtracted。
QVariant QPolygon::operator QVariant() const
将多边形作为QVariant返回。
相关非成员函数
QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon)
将给定的polygon写入给定的stream,并返回流的引用。
另请参阅序列化 Qt 数据类型。
QDataStream &operator>>(QDataStream &stream, QPolygon &polygon)
从给定的流中读取多边形并将其存入给定的多边形,并返回对流的引用。
另请参阅序列化 Qt 数据类型。
© 2024 The Qt Company Ltd. 本文档中的文档贡献归各自的拥有者所有。本提供的文档是根据自由软件基金会发布的GNU自由文档许可证版本1.3的条款许可的。Qt及其商标是芬兰及全球其他地区的The Qt Company Ltd的商标。所有其他商标均属于其各自的所有者。