QPolygon类

QPolygon类使用整型精度提供一系列点。更多信息...

头文件 #include <QPolygon>
CMakefind_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmakeQT += gui
继承自 QList

注意:本类中的所有函数都是可重入的

公共函数

QPolygon()
QPolygon(const QList<QPoint> &points)
QPolygon(const QRect &rectangle, bool closed = false)
QRectboundingRect() const
boolcontainsPoint(const QPoint &point, Qt::FillRule fillRule) const
QPolygonintersected(const QPolygon &r) const
boolintersects(const QPolygon &p) const
voidpoint(int index, int *x, int *y) const
QPointpoint(int index) const
voidputPoints(int index, int nPoints, int firstx, int firsty, ...)
voidputPoints(int index, int nPoints, const QPolygon &fromPolygon, int fromIndex = 0)
voidsetPoint(int index, int x, int y)
voidsetPoint(int index, const QPoint &point)
voidsetPoints(int nPoints, const int *points)
voidsetPoints(int nPoints, int firstx, int firsty, ...)
QPolygonsubtracted(const QPolygon &r) const
voidswap(QPolygon &other)
(自6.4起) QPolygonFtoPolygonF() const
voidtranslate(int dx, int dy)
voidtranslate(const QPoint &offset)
QPolygontranslated(int dx, int dy) const
QPolygontranslated(const QPoint &offset) const
QPolygonunited(const QPolygon &r) const
QVariantoperator QVariant() const
QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon)
QDataStream &operator>>(QDataStream &stream, QPolygon &polygon)

详细说明

A QPolygon对象是QList<QPoint>。向QPolygon添加点的最简单方法是使用QList的流操作符,如下所示

QPolygon polygon;
polygon << QPoint(10, 20) << QPoint(20, 30);

除了QList提供的函数外,QPolygon还提供了一些特定于点的函数。

可以通过将索引传递给point()函数来检索多边形的每个点。为了填充多边形,QPolygon提供了setPoint()函数来设置给定索引处的点,setPoints()函数来设置多边形中的所有点(调整大小以匹配给定点数),以及putPoints()函数,它将一定数量的给定点从指定索引复制到多边形中(如果需要,调整多边形大小)。

QPolygon提供了几何函数的boundingRect()和translate()函数。使用QTransform::map()函数进行更通用的QPolygon变换。

QPolygon类是隐式共享的。

另请参阅QListQPolygonFQLine

成员函数文档

[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)的多边形

QPolygon polygon(1);
polygon[0] = QPoint(4, 5);
polygon.putPoints(1, 2, 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 的点设置为坐标为 xy 的点。

另请参阅pointputPointssetPoints

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);

另请参阅setPointputPoints

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的商标。所有其他商标均属于其各自的所有者。