このページでは

QPolygon Class

QPolygon クラスは、整数精度で点のリストを提供します。詳細...

ヘッダー: #include <QPolygon>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui
継承元: QList

注:このクラスのすべての関数は再入可能です。

パブリック関数

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)
(since 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
operator QVariant() const
QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon)
QDataStream &operator>>(QDataStream &stream, QPolygon &polygon)

詳細な説明

QPolygon オブジェクトは、QList<QPoint> です。QPolygon に点を追加する最も簡単な方法は、以下に示すように、QList のストリーミング演算子を使用することです。

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

QList が提供する関数に加え、QPolygon は点固有の関数をいくつか提供しています。

ポリゴンの各点は、そのインデックスをpoint() 関数に渡すことで取得できます。ポリゴンに点を追加するには、 QPolygonは、指定されたインデックスの点を設定するsetPoint()関数、ポリゴンのすべての点を設定する(指定された点数に合わせてサイズを変更する)setPoints()関数、および指定されたインデックスから指定された数の点をポリゴンにコピーする(必要に応じてポリゴンのサイズを変更する)putPoints()関数を提供しています。

QPolygon では、ジオメトリ関数として `boundingRect()` および `translate()` 関数が提供されています。QPolygon のより一般的な変換を行うには、`QTransform::map()` 関数を使用してください。

QPolygonクラスは暗黙的に共有されます。

QList 、QPolygonF 、およびQLineも参照してください 。

メンバ関数のドキュメント

[constexpr noexcept default] QPolygon::QPolygon()

頂点を持たない多角体を生成します。

QList::isEmpty()も参照してください 。

QPolygon::QPolygon(const QList<QPoint> &points)

指定されたpoints を含む多角形を作成します。

setPoints()も参照してください 。

QPolygon::QPolygon(const QRect &rectangle, bool closed = false)

指定されたrectangle から多角形を作成します。closed がfalseの場合、多角形には長方形の4つの点が時計回りに並んだもののみが含まれます。そうでない場合、多角形の5番目の点は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)

指定されたfromIndex (デフォルトは0)の座標から、fromPolygon 内の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) の 2 つの点からなるポリゴンを作成します。

static const int points[] = { 10, 20, 30, 40 };
QPolygon polygon;
polygon.setPoints(2, points);

setPoint() およびputPoints()も参照してください 。

void QPolygon::setPoints(int nPoints, int firstx, int firsty, ...)

ポリゴンのサイズをnPoints に変更し、変数引数リストで指定された点でポリゴンを構成します。点は整数のシーケンスとして指定され、firstx 、firsty …という順で指定されます。

以下のサンプルコードは、2つの点 (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()も参照してください 。

QPolygon::operator QVariant() const

ポリゴンをQVariant

関連する非会員

QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon)

指定されたpolygon を指定されたstream に書き込み、そのストリームへの参照を返します。

「Qt データ型のシリアライズ」も参照してください 。

QDataStream &operator>>(QDataStream &stream, QPolygon &polygon)

指定されたstream からポリゴンを読み込み、指定されたpolygon に書き込み、そのストリームへの参照を返します。

「Qtデータ型のシリアライズ」も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.