QT图形视图框架绘制曲线图和Smith图
QT图形视图框架绘制曲线图和Smith图
QGraphicsView是Qt框架中的一个图形视图部件,用于显示和处理2D图形元素。它提供了强大的工具来创建交互式和自定义的图形应用程序。在绘制折线图和Smith图时,使用QGraphicsView有以下一些优点:
-
交互性: QGraphicsView允许用户与图形进行交互,例如缩放、平移和选择图形元素。这对于折线图和Smith图等图形来说非常有用,因为用户可以自由浏览图形、查看详细信息以及与图形进行互动。
-
自定义绘制: 您可以通过QGraphicsView来自定义绘制折线图和Smith图的方式。它提供了绘图区域,您可以在其中绘制您自己的图形元素、线条、文本等。这使得您可以根据特定需求绘制和呈现图形。
-
图形布局: QGraphicsView还支持在一个视图中组织多个图形项。这对于在同一窗口中显示多个折线图或Smith图以及它们之间的相互关系非常有用。
-
视图/场景分离: QGraphicsView使用场景(QGraphicsScene)来存储和管理图形项。这种分离允许您在多个视图之间共享相同的场景,从而实现多个视图同时显示相同的图形。
-
性能优化: QGraphicsView具有一些性能优化功能,如局部渲染,可确保在处理大型图形时仍能保持较高的性能。
总之,QGraphicsView是一个功能强大的工具,特别适合创建和展示需要交互性和自定义绘制的图形应用程序。使用它可以简化折线图和Smith图等图形的开发,并为用户提供更好的使用体验。
该视图框架实现了类似于ADS绘制图形的功能,可以对图像元素进行编辑,可以修改线的宽度,颜色等属性。
代码注释完备
简单的代码示例:
#ifndef TURBOPLOT_TURBOPATHPOINTITEM_H
#define TURBOPLOT_TURBOPATHPOINTITEM_H#include <QGraphicsItem>namespace turbo
{class TurboTextItem;class TurboPathPointItem : public QGraphicsItem{public:TurboPathPointItem(QGraphicsItem *parent = nullptr);~TurboPathPointItem() override;/*** @brief 更新点的位置,将点置于距离当前鼠标点最近的位置* @param event*/void updatePos(QGraphicsSceneMouseEvent *event);/*** @brief 添加路径点的坐标,便于移动时候计算最近点* @param points*/void addPoints(const QPolygonF& points) { points_.append(points); }/*** @brief 设置当前mark点的index 用于确定文字的初始位置* @param index*/void setIndex(int index);protected:/*** @brief 将坐标点数据转换成实部虚部数据并且显示出来* @param point*/void pointToVal(const QPointF& point);QRectF boundingRect() const override;void paint(QPainter *painter, const QStyleOptionGraphicsItem *style, QWidget *widget) override;void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;private:QPolygonF points_;TurboTextItem* text_item_;int index_;};
}#endif //TURBOPLOT_TURBOPATHPOINTITEM_H
此类的要点包括:
TurboPathPointItem
继承自QGraphicsItem
,使其成为可在QGraphicsScene
中使用的图形元素。updatePos
函数用于在鼠标拖动时更新点的位置,以便将点放置在最接近线的点位置。addPoints
函数用于添加路径点的坐标,以便在移动点时计算最近的点。pointToVal
函数将点的坐标数据转换为实部和虚部数据,并显示在点的附近。boundingRect
函数定义了元素的边界框,以便QGraphicsView知道如何正确渲染元素。paint
函数用于绘制元素。mouseMoveEvent
函数处理鼠标移动事件。
该类还包括TurboTextItem
,用于显示点的坐标数据。
这个示例展示了如何使用Qt的QGraphicsView框架来创建自定义图形元素以及如何使图形元素在交互中响应。这使得您可以构建强大的曲线图和Smith图应用程序,使用户能够交互地浏览和标注图形数据。
请注意,这只是示例的一部分,用于启发您的项目。您可以根据自己的需求进一步扩展和定制这个框架,以满足您的应用程序的需求。
该示例目前经过测试,可以在不卡顿的情况下渲染大概30W个点。项目暂未开发完成,目前只是提供预览,如果您喜欢,请点赞留言。您的支持是我最大的动力。
相关文章:

QT图形视图框架绘制曲线图和Smith图
QT图形视图框架绘制曲线图和Smith图 QGraphicsView是Qt框架中的一个图形视图部件,用于显示和处理2D图形元素。它提供了强大的工具来创建交互式和自定义的图形应用程序。在绘制折线图和Smith图时,使用QGraphicsView有以下一些优点: 交互性&am…...

0032【Edabit ★☆☆☆☆☆】【每秒帧数】Frames Per Second
0032【Edabit ★☆☆☆☆☆】【每秒帧数】Frames Per Second algorithms language_fundamentals math numbers Instructions Create a function that returns the number of frames shown in a given number of minutes for a certain FPS. Examples frames(1, 1) // 60 fra…...

【LeetCode】1423 可获得的最大点数(中等题)
【题目描述】 几张卡牌 排成一行,每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动,你可以从行的开头或者末尾拿一张卡牌,最终你必须正好拿 k 张卡牌。 你的点数就是你拿到手中的所有卡牌的点数之和。 给你一个整数…...

2024年天津中德应用技术大学专升本物流管理专业课考试大纲
天津中德应用技术大学物流管理专业(高职升本科)2024年专业基础考试大纲 一、试卷类型 物流管理专业升本专业课考试共1套试卷,总分200分,考试时间为2小时。内容包含仓储与配送管理40%、物流基础30%,运输管理30%&#…...

目标检测YOLO实战应用案例100讲-船舶目标检测及编队识别(续)
目录 3.2.3 分类与回归 3.2.4 网络预设置与训练策略 3.3 实验与分析 3.3.1 实验环境 3.3.2...

【MySQL索引与优化篇】索引的数据结构
文章目录 1. 概述2. 常见索引结构2.1 聚簇索引2.2 二级索引(辅助索引、非聚簇索引)2.3 联合索引 3. InnoDB的B树索引的注意事项3.1 根页面位置万年不动3.2 内节点中目录项记录的唯一性 4. MyISAM中的索引方案5. InnoDB和MyISAM对比6. 小结7. 补充:MySQL数据结构的合…...

Qt Widget 删除之后还会显示 问题
目录 问题描述:Qt QWidget 删除之后还会显示 解决方案: Part1: 使用 deleteLater Part2: 使用 setParent(nullptr) 父控件为空 还有一种不常用的方法 隐藏: 问题描述:Qt QWidget 删除之后还会显示 Qt 无论使用 while (Layo…...

关系型数据库的问题和NoSQL数据库的应用
1.关系型数据库的问题 系统使用通用的商用关系型数据库,系统内部数据采用中央集中方式存储。系统投入使用后,初期用户数量少,系统运行平稳。一段时间后,用户数出现了爆炸式增长,系统暴露出诸多问题,集中表…...

二进制安装k8s
192.168.11.12 master01 192.168.11.12 y4 node01 192.168.11.14 y5 node02 192.168.11.15 对环境进行初始化,主机192.168.11.12、主机y4、主机y5,三台主机都要做以下操作,唯一不同的就是修改主…...

超简洁ubuntu linux 安装 cp2k
文章目录 打开下载网址解压接下来的步骤讲解 将解压的包移到对应路径下最后运行 打开下载网址 需要从github下载:下载网址 两个都可以从windows下先下载,再复制到linux中, 如果不能复制,右键这两个,复制链接…...

判断日期区间或季节等
使用JavaScript的Date对象来获取当前日期,并通过比较判断是否在指定的日期范围内(如3月16日-9月15日)。以下是一个示例代码: var currentDate new Date(); // 获取当前日期 var startRange new Date(currentDate.getFullYear()…...

入门人工智能 —— 学习数据持久化、使用 Python 将数据保存到mysql(7)
入门人工智能 —— 学习数据持久化、使用 Python 将数据保存到mysql 什么是数据持久化?使用 Python 进行数据持久化步骤 1: 安装 MySQL步骤 2: 安装必要的 Python 库步骤 3: 连接到 MySQL 数据库步骤 4: 创建数据表步骤 5: 插入数据步骤 6: 查询数据步骤 7: 关闭连接…...

c语言从入门到实战——分支和循环
分支和循环 前言1. if语句1.1 if1.2 else1.3 分支中包含多条语句1.4 嵌套if1.5 悬空else问题 2. 关系操作符3. 条件操作符4. 逻辑操作符:&& , || , !4.1 逻辑取反运算符4.2 与运算符4.3 或运算符4.4 练习:闰年的判断4.5 短路 5. swit…...

交易所(Exchange, ACM/ICPC NEERC 2006, UVa1598)rust解法
你的任务是为交易所设计一个订单处理系统。要求支持以下3种指令。 BUY p q:有人想买,数量为p,价格为q。 SELL p q:有人想卖,数量为p,价格为q。 CANCEL i:取消第i条指令对应的订单(输…...

shell_51.Linux获取用户输入_无显示读取,从文件中读取
无显示读取 有时你需要从脚本用户处得到输入,但又不想在屏幕上显示输入信息。典型的例子就是输入密码,但除此之外还有很多种需要隐藏的数据。 -s 选项可以避免在 read 命令中输入的数据出现在屏幕上(其实数据还是会被显示,只不过 …...

NOIP2023模拟2联测23 集训
题目大意 给定 n n n个数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an,你需要找到一个集合 S S S,使得 S S S中严格大于 S S S的平均数的数字个数尽量多,输出最多的个数。 注意:这里的集合是可重集,…...

【设计模式】第3节:设计模式概论
设计模式不是代码,而是某类问题的通用方案。设计模式的本质是提高软件的维护性、通用性和扩展性,并降低软件的复杂度。一共有24种设计模式,可以分为创建型模式、结构型模式和行为型模式三大类。设计模式中比较重要的有:单例模式、…...

风力发电功率预测(CEEMDAN-LSTM-CNN-CBAM模型,Python代码)
1.前言 1.1.运行效果:风力发电功率预测(CEEMDAN-LSTM-CNN-CBAM模型,Python代码)_哔哩哔哩_bilibili 1.2.环境库: 如果库版本不一样, 一般也可以运行,这里展示我运行时候的库版本,是…...

精通代码复用:设计原则与最佳实践
精通代码复用:设计原则与最佳实践 在你开始设计的所有层次上,从单一函数、类,到整个库和框架,都需要从一开始就考虑到代码复用。在接下来的文本中,所有这些不同的层次都被称为组件。以下策略将帮助你合理地组织你的代…...

【static + 代码块+toString打印对象】
文章目录 static成员static修饰成员变量static成员变量初始化代码块 对象的打印写show方法打印对象调用toString打印对象 总结 static成员 举例:一个班的学生,在实例化每个人的名字,年龄,学号等学员信息时都不一样,但…...

【vue3 】 创建项目vscode 提示无法找到模块
使用命令创建 vue3 创建新应用 npm create vuelatest会看到一些可选功能的询问? √ 请输入项目名称: … vue-project √ 是否使用 TypeScript 语法? … 否 / 是 √ 是否启用 JSX 支持? … 否 / 是 √ 是否引入 Vue Router 进行单…...

盘点算法比赛中常见的AutoEDA工具库
在完成竞赛和数据挖掘的过程中,数据分析一直是非常耗时的一个环节,但也是必要的一个环节。 能否使用一个工具代替人来完成数据分析的过程呢,现有的AutoEDA工具可以一定程度上完成上述过程。本文将盘点常见的AutoEDA工具,欢迎收藏转…...

ICLR 2023丨3DSQA:3D 场景中的情景问答
来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://arxiv.org/pdf/2210.07474.pdf 主页链接:http://sqa3d.github.io 图 1:3D 场景中情景问答 (SQA3D) 的任务图示。给定场景上下文 S(例如&#…...

ChatGPT的前世今生:从概念到现实的AI之旅
ChatGPT的前世今生:从概念到现实的AI之旅 随着技术的飞速发展,人工智能已经从科幻小说中的概念转变为我们日常生活中不可或缺的一部分。其中,ChatGPT无疑是这个领域的佼佼者。那么,让我们一起探索ChatGPT的发展历程,从…...

MINA架构DEMO
参考:Java中的MINA框架_java mina_小陈拾光的博客-CSDN博客 MINA:一个简洁易用的基于TCP/IP通信的JAVA框架。 <dependency><groupId>org.apache.mina</groupId><artifactId>mina-core</artifactId><version>2.1.5&…...

Linux基础:2:shell外壳+文件权限
shell外壳文件权限 一.shell原理:1.对比:windo GUI 和 shell1.windo GUI2. shell 2.为什么?是什么?怎么办?1.为什么有shell2.是什么?3.怎么办?4.补充: 二.linux权限管理:…...

webpack 解决:TypeError: merge is not a function 的问题
1、问题描述: 其一、存在的问题为: TypeError: merge is not a function 中文为: 类型错误:merge 不是函数 其二、问题描述为: 想执行 npm run dev 命令,运行起项目时,控制台报错 TypeErro…...

datahub 中血缘图的实现分析,在react中使用airbnb的visx可视化库来画有向无环图
背景 做大数据的项目,必不可少的是要接触到数据血缘图,它在大数据项目中有着很重要的作用。 之前在公司也做过一些案例,也看过很多友商的产品,阿里的DataWork,领英的Datahub, datawork的血缘图使用的是 G6…...

二、判断语句
文章目录 1.if语句1)if判断语句基本格式2) 网吧上网3)if语句使用逻辑运算 2.if-else语句1)if-else的使用格式2)网吧上网 3.多重判断elif语句1) 多重判断elif2)例子3)注意点 4.if嵌套…...

龙智汽车行业客户案例:Jira数据中心版助客户解锁高效项目管理
龙智技术支持部负责人、Atlassian认证专家叶燕秀分享了她帮助某汽车企业落地Jira的故事,并详解了该公司选择Jira数据中心版的理由以及工具链的集成情况,为有同样需求的公司提供实践参考。 本文由叶燕秀口述内容整理而成 需求管理:从Excel表格…...