「QT」几何数据类 之 QPolygon 多边形类

server/2024/11/13 0:23:11/

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「QT」QT5程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明
「Py」Python程序设计「Math」探秘数学世界

目录

    • Qt中的QPolygon类
      • 一、引言
      • 二、使用范围
      • 三、类的头文件
      • 四、类的构造介绍
      • 五、共有函数介绍
      • 六、Static函数介绍
      • 七、运算符重载
      • 八、详细代码举例

Qt中的QPolygon类

一、引言

QPolygon是Qt图形库中的一个重要类,它用于表示和操作多边形。在Qt的图形系统中,QPolygon类提供了丰富的属性和方法,使得开发者可以方便地对多边形进行创建、变换、绘制等操作。QPolygon类不仅支持基本的点集操作,还支持诸如旋转、缩放等图形变换,以及多边形的交集、并集、差集等复杂操作。
官方文档:https://doc.qt.io/qt-5/qpolygon.html

二、使用范围

QPolygon类广泛应用于Qt图形界面的开发中,特别是在需要绘制和操作多边形形状的场合。无论是简单的矩形、三角形,还是复杂的不规则多边形,QPolygon都能提供有效的支持。此外,QPolygon还可以与其他Qt图形类(如QPainter、QTransform等)配合使用,实现更复杂的图形绘制和变换效果。

三、类的头文件

QPolygon类的头文件是#include <QPolygon>。在使用QPolygon类之前,需要在源文件中包含这个头文件。继承于QVector<QPoint>。例如:

#include <QPolygon>

四、类的构造介绍

QPolygon类提供了多个构造函数,用于创建不同形式的多边形。以下是一些常用的构造函数:

  1. QPolygon()

    创建一个空的多边形。

  2. QPolygon(const QVector &points)

    根据给定的点集创建一个多边形。

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

    根据给定的矩形创建一个多边形。如果closedtrue,则多边形的第五个点设置为矩形的左上角。

  4. QPolygon(const QPointF& point1, const QPointF& point2, const QPointF& point3, …)

    根据给定的点创建一个多边形。这是一个可变参数构造函数,可以接收任意数量的点。

  5. QPolygon(int n, const QPointF& point1, const QPointF& point2, …)

    根据给定的顶点和数量创建一个多边形。这也是一个可变参数构造函数。

  6. QPolygon(const QPolygon &other)

    复制一个已有的多边形。

五、共有函数介绍

QPolygon类提供了许多共有函数,用于操作多边形的顶点和属性。以下是一些常用的函数:

  1. int size() const

    返回多边形中点的数量。

  2. QPoint point(int index) const

    返回指定索引处的点。

  3. void setPoint(int index, const QPoint &point)

    设置指定索引处的点。

  4. *void putPoints(int index, int nPoints, const QPoint points)

    从指定索引开始,将给定的点集添加到多边形中。

  5. QRect boundingRect() const

    返回包含多边形的最小矩形。

  6. qreal area() const

    返回多边形的面积。

  7. QPointF center() const

    返回多边形的中心点。

  8. bool containsPoint(const QPointF &point, Qt::FillRule fillRule = Qt::OddEvenFill) const

    判断指定的点是否在多边形内部。

  9. QPolygon translated(const QPointF &offset) const

    返回平移后的多边形。

  10. QPolygon intersected(const QPolygon &r) const

    返回与给定多边形的交集。

  11. QPolygon subtracted(const QPolygon &r) const

    返回减去给定多边形后的结果。

六、Static函数介绍

QPolygon类本身并没有提供static函数,但Qt框架中的其他类(如QGlobalStatic)提供了用于创建全局静态对象的static宏和方法。这些static方法可以用于创建和管理QPolygon的全局实例。

七、运算符重载

QPolygon类没有显式地提供运算符重载,但它继承自QVector,因此支持QVector提供的所有运算符重载,包括operator[]用于访问和修改顶点,以及operator<<用于向多边形中添加点。

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

八、详细代码举例

以下是一个使用QPolygon类的详细代码示例,演示了如何创建一个多边形并在窗口上绘制它:

#include <QApplication>
#include <QWidget>
#include <QPolygon>
#include <QPainter>class MyWidget : public QWidget {Q_OBJECTpublic:explicit MyWidget(QWidget *parent = nullptr) : QWidget(parent) {QPolygon polygon;polygon.setPoints(QPointF(50, 50), QPointF(150, 50), QPointF(100, 150), QPointF(50, 150));}protected:void paintEvent(QPaintEvent *event) override {QPainter painter(this);painter.setBrush(QColor(255, 0, 0)); // 设置红色填充painter.drawPolygon(polygon); // 绘制多边形QWidget::paintEvent(event);}private:QPolygon polygon; // 声明一个QPolygon对象
};int main(int argc, char *argv[]) {QApplication app(argc, argv);MyWidget w;w.show();return app.exec();
}

在这个示例中,我们创建了一个名为MyWidget的自定义窗口类,并在其构造函数中创建了一个QPolygon对象,并设置了其顶点。然后,我们重写了paintEvent方法,使用QPainter对象在窗口上绘制了多边形。


在这里插入图片描述


http://www.ppmy.cn/server/141004.html

相关文章

计算机的错误计算(一百五十)

摘要 探讨 MATLAB 中 的计算精度问题。当 为含有小数的大数或 &#xff08;&#xff09;附近数时&#xff0c;输出会有错误数字。 例1. 已知 计算 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 -0.7882256119904400e0、0.1702266977524110e0、-0.…

Redis的缓存问题与应对策略

Redis 作为一种高效的缓存系统&#xff0c;在高并发环境下应用广泛&#xff0c;但也面临一些缓存问题&#xff0c;以下是常见问题及其应对策略。 1. 缓存穿透 问题描述 缓存穿透是指请求的数据在缓存和数据库中都不存在&#xff0c;但大量请求直接到达数据库&#xff0c;从而给…

JavaSecLab靶场搭建

下载地址 whgojp/JavaSecLab: ​ JavaSecLab是一款综合型Java漏洞平台&#xff0c;提供相关漏洞缺陷代码、修复代码、漏洞场景、审计SINK点、安全编码规范&#xff0c;覆盖多种漏洞场景&#xff0c;友好用户交互UI…… (github.com) 安装流程 git clone https://github.com/…

12.UE5朝向鼠标攻击,状态机入门

2-14 朝向鼠标、怪物死亡、状态机、纯函数_哔哩哔哩_bilibili 1.朝向鼠标攻击 之前我们设置了角色移动时&#xff0c;将自动朝向移动的方向 我们需要再攻击时&#xff0c;先将这个关闭掉 随后获取光标的朝向&#xff0c;并只将yaw设置为角色的朝向&#xff0c;然后播放动画&a…

【模型学习之路】手写+分析GAT

从GNN&#xff0c;到GCN&#xff0c;再到GAT 目录 文章目录 前言 GNN GCN GAT 公式 注意力实现 公式对比 多头注意力实现 测试&可视化 前言 读本文前&#xff0c;可以先过一遍【GNN图神经网络】入门到实战完整40讲&#xff01;同济大佬用大白话的方式从零到一讲…

C++顶层const与底层const

顶层const意味着被修饰的对象本身是一个常量。 顶层const可以用来修饰基本数据类型&#xff08;如int、float等&#xff09;和自定义类型&#xff08;如结构体、类等&#xff09;的对象。 顶层const修饰的对象的值不能被修改&#xff0c;但是该对象可以被赋予另一个值&#xf…

股民情绪识别的LSTM-NBM混合模型

大家好&#xff0c;我是带我去滑雪&#xff01; 利用之前爬取2023年10月17日至2024年7月13日的65万余条东方财富网的上证指数股吧的股民评论数据&#xff0c;基于jieba库对股民情绪进行识别&#xff0c;在进行中文分词、去除停用词、合并同义词和长短句分离后&#xff0c;对长文…

备忘录模式:保存对象状态的设计模式

1. 引言 在软件开发中&#xff0c;常常需要保存一个对象的状态&#xff0c;以便将来能够恢复到该状态。在某些情况下&#xff0c;这种需求显得尤为重要&#xff0c;例如在撤销操作、版本控制以及游戏进度保存等场景中。备忘录模式&#xff08;Memento Pattern&#xff09;正是…