当前位置: 首页 > news >正文

qt QGraphicsPolygonItem详解

1、概述

QGraphicsPolygonItem是Qt框架中QGraphicsItem的一个子类,它提供了一个可以添加到QGraphicsScene中的多边形项。通过QGraphicsPolygonItem,你可以定义和显示一个多边形,包括其填充颜色、边框样式等属性。QGraphicsPolygonItem支持各种形状的多边形,包括简单的三角形、四边形以及更复杂的自定义多边形。它允许你设置多边形的几何形状、颜色、边框等属性,并可以响应各种事件,如鼠标点击、移动等。QGraphicsPolygonItem是Qt图形视图框架(Graphics View Framework)的一部分,该框架提供了一个用于2D图形项的高效视图和场景架构。

2、重要方法

QGraphicsPolygonItem提供了一系列方法来设置和控制多边形的属性。以下是一些重要的方法:

  • QGraphicsPolygonItem(const QPolygonF &polygon, QGraphicsItem *parent = nullptr):构造函数,创建一个多边形项,指定其多边形形状。
  • QGraphicsPolygonItem(QGraphicsItem *parent = nullptr):构造函数,创建一个多边形项,不指定其多边形形状,可以在之后通过setPolygon()方法设置。
  • void setPolygon(const QPolygonF &polygon):设置多边形项的形状。
  • QPolygonF polygon() const:返回多边形项的形状。
  • void setBrush(const QBrush &brush):设置多边形的填充颜色或图案。
  • void setPen(const QPen &pen):设置多边形的边框。
  • void setFlags(QGraphicsItem::GraphicsItemFlags flags):设置多边形项的标志,如可移动、可选择等。

此外,QGraphicsPolygonItem还继承了QGraphicsItem的其他方法,如boundingRect()、shape()、contains()、paint()等,这些方法用于定义多边形的边界、形状、包含关系以及绘制方式。

3、重要信号

QGraphicsPolygonItem本身并没有定义特定的信号,但它继承了QGraphicsItem的信号。这些信号通常与项目的交互和状态变化相关,如鼠标事件(mousePressEvent、mouseMoveEvent、mouseReleaseEvent等)、键盘事件(keyPressEvent、keyReleaseEvent等)、选择状态变化(selectionChanged)等。你可以通过连接这些信号到相应的槽函数来响应这些事件。

4、常用枚举类型

QGraphicsPolygonItem并没有定义自己的枚举类型,但它继承了QGraphicsItem的一些枚举类型。这些枚举类型通常用于控制项目的行为,如项目的可见性(QGraphicsItem::ItemIsVisible)、项目的可移动性(QGraphicsItem::ItemIsMovable)、项目的可选择性(QGraphicsItem::ItemIsSelectable)等。你可以通过调用QGraphicsItem的setFlag()方法来设置这些标志。

#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsPolygonItem>int main(int argc, char *argv[])
{QApplication app(argc, argv);// Create scene and viewQGraphicsScene *scene = new QGraphicsScene();QGraphicsView *view = new QGraphicsView(scene);// Create a polygon with some pointsQPolygonF polygon;polygon << QPointF(0, 0)<< QPointF(100, 0) << QPointF(100, 100)<< QPointF(50, 150)<< QPointF(0, 100);// Create polygon itemQGraphicsPolygonItem *polygonItem = new QGraphicsPolygonItem(polygon);polygonItem->setBrush(QBrush(Qt::blue));polygonItem->setPen(QPen(Qt::red, 2));// Add polygon to scenescene->addItem(polygonItem);// Set scene rect and show viewscene->setSceneRect(-50, -50, 200, 200);view->show();return app.exec();
}

觉得有帮助的话,打赏一下呗。。

           

需要商务合作(定制程序)的欢迎私信!! 

相关文章:

qt QGraphicsPolygonItem详解

1、概述 QGraphicsPolygonItem是Qt框架中QGraphicsItem的一个子类&#xff0c;它提供了一个可以添加到QGraphicsScene中的多边形项。通过QGraphicsPolygonItem&#xff0c;你可以定义和显示一个多边形&#xff0c;包括其填充颜色、边框样式等属性。QGraphicsPolygonItem支持各…...

“harmony”整合不同平台的单细胞数据之旅

其实在Seurat v3官方网站的Vignettes中就曾见过该算法&#xff0c;但并没有太多关注&#xff0c;直到看了北大张泽民团队在2019年10月31日发表于Cell的《Landscap and Dynamics of Single Immune Cells in Hepatocellular Carcinoma》&#xff0c;为了同时整合两类数据&#xf…...

如何构建一个可扩展、全球可访问的 GenAI 架构?

你有没有尝试过使用人工智能生成图像&#xff1f; 如果你尝试过&#xff0c;你就会知道&#xff0c;一张好的图像的关键在于一个详细具体的提示。 我不擅长这种详细的视觉提示&#xff0c;所以我依赖大型语言模型来生成详细的提示&#xff0c;然后使用这些提示来生成出色的图像…...

QT实战--qt各种按钮实现

本篇介绍qt一些按钮的实现&#xff0c;包括正常按钮&#xff1b;带有下拉箭头的按钮的各种实现&#xff1b;按钮和箭头两部分分别响应&#xff1b;图片和按钮大小一致&#xff1b;图片和按钮大小不一致的处理&#xff1b;文字和图片位置的按钮 效果图如下&#xff1a; 详细实现…...

RNN And CNN通识

CNN And RNN RNN And CNN通识一、卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;1. 诞生背景2. 核心思想和原理&#xff08;1&#xff09;基本结构&#xff1a;&#xff08;2&#xff09;核心公式&#xff1a;&#xff08;3&#xff09;关…...

生产环境中:Flume 与 Prometheus 集成

在生产环境中&#xff0c;将 Apache Flume 与 Prometheus 集成的过程&#xff0c;需要借助 JMX Exporter 或 HTTP Exporter 来将 Flume 的监控数据转换为 Prometheus 格式。以下是详细的实现方法&#xff0c;连同原理和原因进行逐步解释&#xff0c;让刚接触的初学者也能完成集…...

求平均年龄

求平均年龄 C语言代码C 代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 班上有学生若干名&#xff0c;给出每名学生的年龄&#xff08;整数&#xff09;&#xff0c;求班上所有学生的平均年龄&#xff0c;保留到小数…...

Ardusub源码剖析(1)——AP_Arming_Sub

代码 AP_Arming_Sub.h #pragma once#include <AP_Arming/AP_Arming.h>class AP_Arming_Sub : public AP_Arming { public:AP_Arming_Sub() : AP_Arming() { }/* Do not allow copies */CLASS_NO_COPY(AP_Arming_Sub);bool rc_calibration_checks(bool display_failure)…...

【NLP 2、机器学习简介】

人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂&#xff0c;机器学习就是在其中找到这些的规律&#xff0c;挖掘规律建立一个公式&#xff0c;导致对陌生的数…...

数据结构与算法——N叉树(自学笔记)

本文参考 N 叉树 - LeetBook - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 遍历 前序遍历&#xff1a;A->B->C->E->F->D->G后序遍历&#xff1a;B->E->F->C->G->D->A层序遍历&#xff1a;A->B->C->D->…...

【趣味升级版】斗破苍穹修炼文字游戏HTML,CSS,JS

目录 图片展示 开始游戏 手动升级&#xff08;满100%即可升级&#xff09; 升级完成&#xff0c;即可解锁打怪模式 新增功能说明&#xff1a; 如何操作&#xff1a; 完整代码 实现一个简单的斗破苍穹修炼文字游戏&#xff0c;你可以使用HTML、CSS和JavaScript结合来构建…...

【Oracle】个人收集整理的Oracle常用SQL及命令

【建表】 create table emp( id number(12), name nvarchar2(20), primary key(id) ); 【充值一】 insert into emp select rownum,dbms_random.string(*,dbms_random.value(6,20)) from dual connect by level<101; 【充值二】 begin for i in 1..100 loop inser…...

Linux内核4.14版本——ccf时钟子系统(5)——通用API

1. clk_get 1.1 __of_clk_get_by_name 1.2 clk_get_sys 2. clk_prepare_enable 2.1 clk_prepare 2.2 clk_enable 3. clk_set_rate 1. clk_get clock get是通过clock名称获取struct clk指针的过程&#xff0c;由clk_get、devm_clk_get、clk_get_sys、of_clk_get、of_clk_g…...

安装MySQL 5.7 亲测有效

前言&#xff1a;本文是笔者在安装MySQL5.7时根据另一位博主大大的安装教程基础上做了一些修改而成 首先在这里表示对博主大大的感谢 下面附博主大大地址 下面的步骤言简意赅 跟着做就不会出错 希望各位读者耐下心来 慢慢解决安装中出现的问题~MySQL 5.7 安装教程&#xff08;全…...

《Django 5 By Example》阅读笔记:p455-p492

《Django 5 By Example》学习第 16 天&#xff0c;p455-p492 总结&#xff0c;总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现&#xff0c;但是折扣码是手动生成的&#xff0c;感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存&#xff0…...

Element-UI 官网的主题切换动画

文章目录 实现圆形扩散过渡动画 实现一下 Element-UI 官网的主题切换动画加粗样式 实现 首先我们起一个 html 文件&#xff0c;写一个按钮&#xff0c;以及简单的背景颜色切换&#xff0c;来模拟主题的切换 想要实现过渡效果&#xff0c;需要先用到一个 JavaScript 的原生方…...

Golang 构建学习

Golang 构建学习 如何搭建Golang开发环境 1. 下载GOlang包 https://golang.google.cn/dl/ 在地址上下载Golang 2. 配置包环境 修改全局环境变量&#xff0c;GOPROXY&#xff0c;GOPATH&#xff0c;GOROOT GOPROXYhttps://goproxy.cn,direct GOROOT"" // go二进…...

VM Virutal Box的Ubuntu虚拟机与windows宿主机之间设置共享文件夹(自动挂载,永久有效)

本文参考如下链接 How to access a shared folder in VirtualBox? - Ask Ubuntu &#xff08;1&#xff09;安装增强功能&#xff08;Guest Additions&#xff09; 首先&#xff0c;在网上下载VBoxGuestAdditions光盘映像文件 下载地址&#xff1a;Index of http://…...

分析 系统滴答时钟(tickClock),设置72MHz系统周期,如何实现1毫秒的系统时间?

一、CubeMX相关配置 1.1 相关引脚配置 1.2 相关时钟数配置 1.3 打开程序源码 二、相关函数分析...

C++优选算法十七 多源BFS

1.单源最短路问题 一个起点一个终点。 定义&#xff1a;在给定加权图中&#xff0c;选择一个顶点作为源点&#xff0c;计算该源点到图中所有其他顶点的最短路径长度。 2.多源最短路问题 定义&#xff1a;多源最短路问题指的是在图中存在多个起点&#xff0c;需要求出从这些…...

Mongodb入门到放弃

Mongodb分片概括 分片在多台服务器上分布数据的方法&#xff0c; Mongodb使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统&#xff0c;可以挑战单台服务器的容量。 例如&#xff0c;高查询率可以耗尽服务器的cpu容量&…...

青藤云安全携手财信证券,入选金融科技创新应用优秀案例

11月29日&#xff0c;由中国信息通信研究院主办的第四届“金信通”金融科技创新应用案例评选结果正式发布。财信证券与青藤云安全联合提交的“基于RASP技术的API及数据链路安全治理项目”以其卓越的创新性和先进性&#xff0c;成功入选金融科技创新应用优秀案例。 据悉&#x…...

在CentOS系统中安装工具包的时候报错的解决方法

我刚装了一个新的虚拟机&#xff0c;打算安装一些工具出现了错误信息 执行的命令如下&#xff1a; yum install -y yum-utils device-mapper-persistent-data lvm2错误信息如下 Cannot find a valid baseurl for repo: base/7/x86_64搜索了一下原因有好几种。 一是网络不通…...

cad软件打不开报错cad acbrandres dll加载失败

一切本来很顺利哒 但是&#xff0c;当我用快捷方式打开时&#xff0c;就出现了这个错误。进入文件路径&#xff0c;是有这个的&#xff1b; 在文件路径直接打开&#xff0c;也会提示错误 原因竟然是我改了个名字&#xff1a; 随便选的文件路径&#xff0c;空的,文件名为Acr…...

14、保存与加载PyTorch训练的模型和超参数

文章目录 1. state_dict2. 模型保存3. check_point4. 详细保存5. Docker6. 机器学习常用库 1. state_dict nn.Module 类是所有神经网络构建的基类&#xff0c;即自己构建一个深度神经网络也是需要继承自nn.Module类才行&#xff0c;并且nn.Module中的state_dict包含神经网络中…...

【前端开发】JS+Vuew3请求列表数据并分页

应用技术&#xff1a;原生JavaScript Vue3 $(function () {ini(); });function ini() {const { createApp, ref, onMounted } Vue;createApp({setup() {const data ref({studentList: [],page: 1,pageSize: 10,});const getStudentList async (page, key) > {window.ons…...

Trimble X12助力电力管廊数据采集,为机器人巡视系统提供精准导航支持

地下电缆是一个城市重要的基础设施&#xff0c;它不仅具有规模大、范围广、空间分布复杂等特点&#xff0c;更重要的是它还承担着信息传输、能源输送等与人们生活息息相关的重要功能&#xff0c;也是一个城市赖以生存和发展的物质基础。 01、项目概述 本次项目是对某区域2公里左…...

Docker 清理镜像策略详解

文章目录 前言一、删除 Docker 镜像1. 查看当前镜像2. 删除单个镜像3. 删除多个镜像4. 删除所有未使用的镜像5. 删除悬空的 Docker 镜像6. 根据模式删除镜像7. 删除所有镜像 二、删除 Docker 容器1. 查找容器2. 删除一个或多个特定容器3. 退出时删除容器4. 删除所有已退出的容器…...

【Linux】TCP网络编程

目录 V1_Echo_Server V2_Echo_Server多进程版本 V3_Echo_Server多线程版本 V3-1_多线程远程命令执行 V4_Echo_Server线程池版本 V1_Echo_Server TcpServer的上层调用如下&#xff0c;和UdpServer几乎一样&#xff1a; 而在InitServer中&#xff0c;大部分也和UDP那里一样&…...

排序学习整理(2)

上集回顾 排序学习整理&#xff08;1&#xff09;-CSDN博客 2.3 交换排序 交换排序的基本思想是&#xff1a;根据序列中两个记录键值的比较结果&#xff0c;交换这两个记录在序列中的位置。 特点&#xff1a; 通过比较和交换操作&#xff0c;将键值较大的记录逐步移动到序列…...

帮别人做网站哪里可以接单/网站推广软件免费版

闲来无事&#xff0c;看到了拓扑排序就学习了一下。 拓扑排序&#xff1a; 算导上说是使用深搜来对有向无环图进行排序&#xff0c;得到一种线性次序。不过深搜的理解还理解不到。估计是深搜学的不怎么样吧&#xff01; 说说我理解的这个线性次序吧。我认为算导上的例子就特别…...

wordpress网站自动伪原创/品牌推广方式有哪些

KMP算法是一种改进的字符串匹配算法&#xff0c;由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt同时发现&#xff0c;因此人们称它为克努特——莫里斯——普拉特操作&#xff08;简称KMP算法&#xff09;。KMP算法的关键是利用匹配失败后的信息&#xff0c;尽量减少模式串与主串…...

初二怎么做网站/网络广告的特点

【单选题】表达式2*3**2//8%7的计算结果是( ) 【单选题】以下选项中,不属于Python保留字的是( ) 【单选题】dict是一个字典变量,能够输出数字5的选项是( ) dict{"food":{"cake":1,"egg":5},"cake":2,"egg":3} 【判断题】用摆…...

威客做网站/高端网站建设报价

本文实例为大家分享了Java简易抽奖系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下需求&#xff1a;实现一个抽奖系统1 注册2 登录3 抽奖必须先注册 再登陆 再抽奖随机产生4个随机数作为幸运卡号用户注册后 登录的时候 用户名密码输入判断只有三次机会需要做…...

网站建设应考虑哪些方面的问题/长沙大型网站建设公司

现象&#xff1a; 现在大多数java开发者使用的IDE都是eclipse&#xff0c;而且一般在一个workspace中&#xff0c;会有很多个项目&#xff0c;有些是open的&#xff0c;有些是关闭的。有时候eclipse在使用过程中会莫名其妙的异常中断关闭&#xff0c;再打开eclipse&#xff0c;…...

外国做的中国动画视频网站/培训总结

多余的话不说&#xff0c;直接看代码&#xff1a; 1) 在 common/config/main.php 写入配置代码 1 // 配置翻译信息2 i18n > [3 translations > [4 app* > [ //app表示整个文件可以替换掉5 class &g…...