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

qt qchart学习

Qt Charts主要由QChartView、QChart、QLegend图例、坐标轴(由QAbstractAxis子类实现)、**数据源(由QAbstractSeries子类实现)**等组成

使用QChart的前期准备

1. Qt5.9及以上版本;

2. .pro文件中添加QT += charts

3. 在使用QChart的各个控件之前,引用头文件并必须先声明一个命名空间。如

#include <QtCharts>
using namespace QtCharts; 
或者是
#include <QtCharts>
QT_CHARTS_USE_NAMESPACE 

QChartView

QChartView是QGraphicsView子类,相当于是显示图表的视图。

常用函数

  1. void setChart(QChart *chart); 设置图表。新图表的所有权被传递给图表视图,并且先前图表的所有权被释放。

  1. void setRubberBand(const QChartView::RubberBands &rubberBand) 设置橡皮筋标志

QChart

QChart是QGraphicsItem的子类,相当于是显示图表的图形项。

常用函数

//与序列相关的函数

  1. void addSeries(QAbstractSeries *series); //添加序列

  1. void removeSeries(QAbstractSeries *series);

  1. void removeAllSeries();

  1. QList<QAbstractSeries *> series() const; //获取序列

//与坐标轴相关的函数

  1. void setAxisX(QAbstractAxis *axis, QAbstractSeries *series = Q_NULLPTR);//过时了

  1. void setAxisY(QAbstractAxis *axis, QAbstractSeries *series = Q_NULLPTR);

  1. QAbstractAxis *axisX(QAbstractSeries *series = Q_NULLPTR) const;//过时了

  1. QAbstractAxis *axisY(QAbstractSeries *series = Q_NULLPTR) const;

  1. void addAxis(QAbstractAxis *axis, Qt::Alignment alignment);// 添加坐标轴。现在主要用这个函数

  1. void removeAxis(QAbstractAxis *axis);

  1. QList<QAbstractAxis*> axes(Qt::Orientations orientation = Qt::Horizontal|Qt::Vertical, QAbstractSeries *series = Q_NULLPTR) const; //获取坐标轴

//与图例相关的函数

  1. QLegend *legend() const; 获取图例,图例对象无法创建或删除,但可以通过 QChart 类引用。

序列(QAbstractSeries)

QAbstractSeries 类是所有 Qt 图表曲线的基类。通常,使用曲线类型特定的继承类而不是基类。也是数据源。

可以控制(序列是否显示序列、序列线条的颜色、画笔、画刷、透明度);序列(数据点的可见度、添加插入删除清除数据点);(数据点标签的可见性、颜色、字体、格式)

enum QAbstractSeries::SeriesType:此枚举描述了曲线的类型。
SeriesTypeLine:折线图。
SeriesTypeArea:面积图。
SeriesTypeBar:垂直条形图。
SeriesTypeStackedBar:垂直堆积条形图。
SeriesTypePercentBar:垂直百分比条形图。
SeriesTypePie:饼图。
SeriesTypeScatter:散点图。
SeriesTypeSpline:样条图。
SeriesTypeHorizontalBar:水平条形图。
SeriesTypeHorizontalStackedBar:水平堆积条形图。
SeriesTypeHorizontalPercentBar:水平百分比条形图。
SeriesTypeBoxPlot:箱线图。
SeriesTypeCandlestick:烛台图。

常用的函数:

//与坐标轴相关

  1. bool attachAxis(QAbstractAxis *axis); //序列和坐标轴关联

  1. bool detachAxis(QAbstractAxis *axis);

  1. QList<QAbstractAxis*> attachedAxes();//获取坐标轴

//与QChart相关

  1. QChart *chart() const;

//与添加删除操作相关

  1. void append(const QList<QPointF> &points); //折线图等的序列数据添加

  1. QXYSeries &operator << (const QPointF &point);//折线图等的序列数据添加

  1. void replace(int index, const QPointF &newPoint);

  1. void remove(const QPointF &point);

  1. void insert(int index, const QPointF &point);

  1. void clear();

坐标轴(QAbstractAxis)

折线图一般用QValueAxis数值坐标轴,或者是QLogValueAxis对数坐标轴。柱状图横坐标通常用文字,如QBarCategoryAxis类别坐标轴。

每个轴的元素(比如轴线,标题,标签,网格线,阴影,可见性)都是可以控制的。

常用函数

图例(QLegend)

图例(Legend)是对图表上显示的序列的示例说明,一般是有线条颜色和文字说明。QLegend是封装了图例控制功能的类,可以为每个序列设置图例中的文字,可以控制图例显示在图表的上、下、左、右不同位置。

图例对象无法创建或删除,但可以通过 QChart 类引用。如在QChart类调用legend函数得到图例指针。QLegend *legend() const;

enum MarkerShape { MarkerShapeDefault, MarkerShapeRectangle, MarkerShapeCircle, MarkerShapeFromSeries }

enum QLegend::MarkerShape:此枚举描述了渲染图例标记项时使用的形状。

MarkerShapeDefault:仅 QLegendMarker 项目支持此值。

MarkerShapeRectangle:矩形标记。

MarkerShapeCircle:圆形标记。

MarkerShapeRotatedRectangle:旋转的矩形标记。

MarkerShapeTriangle:三角形标记。

MarkerShapeStar:星形标记。

MarkerShapePentagon:五角形标记。

MarkerShapeFromSeries:标记形状由曲线决定。在散点曲线的情况下,图例标记看起来像一个散点,并且与该点的大小相同。对于直线或样条曲线,图例标记看起来像直线的一小段。对于其他曲线类型,显示矩形标记。

常用函数

  1. void setAlignment(Qt::Alignment alignment);图例与图表对齐方式

//与图例标记相关

  1. QList <QLegendMarker*> markers(QAbstractSeries *series = Q_NULLPTR) const; //返回图例中的标记列表

  1. void setShowToolTips(bool show);是否tip提示

图例标记(QLegendMarker)

对于图例还有一个类QLegendMarker,可以为每个序列的图例生成一个类似于QCheckBox的组件,在图例上单击序列的标记,可以控制序列是否显示。

图例标记由图标颜色标签组成:

图标颜色对应于用于绘制图表的颜色。

标签显示曲线的名称(或饼图的切片标签或条形图的条形集的标签)。

QLegendMarker 类是一个抽象类,可用于访问图例中的标记。是 QAreaLegendMarker、QBarLegendMarker、QBoxPlotLegendMarker、QCCandlestickLegendMarker、QPieLegendMarker、QXYLegendMarker 的父类。

enum QLegendMarker::LegendMarkerType:图例标记对象的类型。

LegendMarkerTypeArea:区域图的图例标记。

LegendMarkerTypeBar:条形图的图例标记。

LegendMarkerTypePie:饼图的图例标记。

LegendMarkerTypeXY曲线、样条线或散点图的图例标记。

LegendMarkerTypeBoxPlot:箱型图的图例标记。

LegendMarkerTypeCandlestick:烛台图的图例标记。

常用函数

  1. void setLabelBrush(const QBrush &brush); 标签的画刷

  1. void setBrush(const QBrush &brush);图标颜色画刷

  1. virtual LegendMarkerType type() = 0;

//与序列相关的函数

  1. virtual QAbstractSeries* series() = 0;

信号

  1. void clicked(); //用于点击图例标记的信号槽处理。

  1. void hovered(bool status);

   foreach (QLegendMarker* marker, chart->legend()->markers()) {QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked()));QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked()));}void MainWindow::on_LegendMarkerClicked()
{QLegendMarker* marker = qobject_cast<QLegendMarker*> (sender());switch (marker->type()){case QLegendMarker::LegendMarkerTypeXY:{marker->series()->setVisible(!marker->series()->isVisible());marker->setVisible(true);qreal alpha = 1.0;if (!marker->series()->isVisible())alpha = 0.5;QColor color;QBrush brush = marker->labelBrush();color = brush.color();color.setAlphaF(alpha);brush.setColor(color);marker->setLabelBrush(brush);brush = marker->brush();color = brush.color();color.setAlphaF(alpha);brush.setColor(color);marker->setBrush(brush);QPen pen = marker->pen();color = pen.color();color.setAlphaF(alpha);pen.setColor(color);marker->setPen(pen);break;}default:break;}}

相关文章:

qt qchart学习

Qt Charts主要由QChartView、QChart、QLegend图例、坐标轴(由QAbstractAxis子类实现)、**数据源(由QAbstractSeries子类实现)**等组成使用QChart的前期准备1. Qt5.9及以上版本&#xff1b;2. .pro文件中添加QT charts3. 在使用QChart的各个控件之前&#xff0c;引用头文件并必…...

手工布署 java 项目

新建一个java springboot项目 maven 这是一个非常简易的 springBoot 的项目 使用 maven 的 package 工具进行打包 把包上传到 linux 的机器上&#xff0c; 确保 linux 机器上安装了 java jdk工具&#xff0c; 并且配置好了 JAVA_HOME 注意&#xff0c;helloworld 默认的是要使…...

《设计模式》观察者模式

《设计模式》观察者模式 观察者模式是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;让多个观察者对象可以同时监听和相应被观察者对象的状态变化&#xff0c;以达到解耦和复用的目的。观察者模式的优点如下&#xff1a; 解耦&#xff1a;观察者模…...

基于SpringBoot的外卖项目(详细开发过程)

基于SpringBootMyBatisPlus的外卖项目1、软件开发整体介绍软件开发流程角色分工2、外卖项目介绍项目介绍产品展示后台系统管理移动端技术选型功能结构角色3、开发环境的搭建开发环境说明建库建表Maven项目搭建项目的目录结构pom.xmlapplication.ymlReggieApplication启动类配置…...

ChatGPT 研发传言席卷互联网公司,这会是一门好生意吗?

ChatGPT&#xff08;也称GPT-3&#xff09;是一种基于人工智能的自然语言生成模型&#xff0c;由OpenAI团队开发。它是GPT系列模型的最新版本&#xff0c;于2020年6月发布。ChatGPT的由来GPT-1是在2018年发布的第一个版本&#xff0c;使用了12亿个参数。随后&#xff0c;GPT-2在…...

获取servlet转发和响应重定向的方式是什么?

&#xff08;1&#xff09; 重定向和转发的区别 1&#xff09;重定向是浏览器发送请求并受到响应以后再次向一个新地址发请求&#xff1b;转发是服务器受到请求后为了完成响应转到一个新的地址。 2&#xff09;重定向中有两次请求对象&#xff0c;不共享数据&#xff1b;转发…...

jvm知识点

jvm面试总结 类加载机制? 如何把类加载到jvm中 ? 装载–>链接–>初始化–>使用–>卸载 装载: ClassFile–>字节流–>类加载器将字节流所代表的静态结构转化为方法区的运行时数据结构在我们的堆中生成一个代表这个类的java.lang.Class对象 链接: 验证–…...

MoveIT Noetic控制真实机械臂

文章目录 环境概述配置修改编写Action Server执行问题故障解决参考接前几篇: ROS MoveIT1(Noetic)安装总结 Solidworks导出为URDF用于MoveIT总结(带prismatic) MoveIT1 Assistant 总结 MoveIT Rviz和Gazebo联合仿真 环境 Ubuntu20.04;ROS1 Noetic;VMware...

如何快速入门编程

最近回答了很多小伙伴的问题&#xff0c;讲到如何快速入门编程&#xff1f;如何更好地学习视觉编程&#xff1f;如何提高编程技能&#xff1f;下面就和你聊聊&#xff0c;要做到这些&#xff0c;应该从哪些方面入手&#xff1f;询问他人我问过工程师们这些最基础的问题&#xf…...

java的反射Reflect

文章目录定义classClass获取一个类的类对象反射的具体步骤1.加载类类API2.实例化3.获取1)获取类中方法2)获取构造方法3)获取当前类的属性4.方法调用应用1.遍历对象属性&#xff0c;进行赋值定义 反射是操作其属性和方法从编码期决定转为在运行期决定 编码期决定&#xff1a;创…...

常用设计模式总结

复习到设计模式的时候写的一些demo代码 回头可以看看 单例的几种比较简单就没写了&#xff0c;专栏有 目录 观察者&#xff08;发布--订阅模式&#xff09;模式&#xff0c;多个对象依赖于一个对象&#xff0c;或者多对多 工厂模式&#xff1a;主要是封装了对象的创建&…...

【算法基础】一维前缀和 + 二维前缀和

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;【C/C】算法 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有…...

Kafka消费分组和分区分配策略

Kafka消费分组&#xff0c;消息消费原理 同一个消费组里的消费者不能消费同一个分区&#xff0c;不同消费组的消费组可以消费同一个分区 &#xff08;即同一个消费组里面的消费者只能在一个分区中&#xff09; Kafka分区分配策略 问题 用过 Kafka 的同学用过都知道&#xf…...

犹太教、基督教、伊斯兰教的区别与联系

一、犹太教、基督教、伊斯兰教的简明关系图二、犹太教、基督教、伊斯兰教的主要区别注&#xff1a;弥赛亚&#xff08;希伯莱语&#xff09;就是基督&#xff08;希腊语&#xff09;&#xff0c;意思是“救世主”。注&#xff1a;伊斯兰教的观点是&#xff1a;穆罕默德不是伊斯…...

华为OD机试 - 打印文件(Python) | 机试题+算法思路+考点+代码解析 【2023】

打印文件 题目 有 5 台打印机打印文件,每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的优先级,其中数字越大优先级越高。 打印机会从自己的待打印队列中选择优先级最高的文件来打印。 如果存在两个优先级一样的文件,则选…...

网络工程师必备知识点

作为网络工程师&#xff0c;您将负责设计、部署和维护计算机网络系统。这包括构建、配置和管理网络设备&#xff0c;如交换机、路由器、防火墙等&#xff0c;并确保网络系统能够高效地运行。您需要了解计算机网络的各个层次、协议、标准和技术&#xff0c;包括TCP/IP、DNS、HTT…...

数据在内存中的存储【下篇】

文章目录⚙️3.浮点型在内存中的存储&#x1f529;3.1.一个例子&#x1f529;3.2.浮点数的存储规则&#x1f529;3.3.例题解析⚙️3.浮点型在内存中的存储 &#x1f529;3.1.一个例子 &#x1f534;浮点数存储的例子&#xff1a;&#x1f447; int main() {int n 9;float* …...

前端开发项目规范写法介绍

1. 基本原则 结构、样式、行为分离 尽量确保文档和模板只包含 HTML 结构,样式都放到样式表里,行为都放到脚本里。 缩进 统一两个空格缩进(总之缩进统一即可),不要使用 Tab 或者 Tab、空格混搭。 文件编码 使用不带 BOM 的 UTF-8 编码。 在 HTML中指定编码 <meta c…...

百万医疗险是什么

一、百万医疗险是什么 从名字可以看出&#xff0c;这是一款医疗险。因为保额高&#xff0c;最高能报销百万&#xff0c;所以叫百万医疗险。 二、百万医疗险有什么用 可以报销被保险人因意外伤害和疾病导致的医疗费用 三、如何挑选 虽然高达几百万的保额&#xff0c;但保额却并非…...

矩阵中的路径 AcWing (JAVA)

请设计一个函数&#xff0c;用来判断在一个矩阵中是否存在一条路径包含的字符按访问顺序连在一起恰好为给定字符串。 路径可以从矩阵中的任意一个格子开始&#xff0c;每一步可以在矩阵中向左&#xff0c;向右&#xff0c;向上&#xff0c;向下移动一个格子。 如果一条路径经过…...

使用终端工具给你的电脑发送弹窗提醒

大家好&#xff0c;我是良许。 现在人手一部智能手机&#xff0c;这些智能手机都有个非常实用的功能&#xff0c;那就是弹窗提醒。当我们收到短信&#xff0c;或者微信信息时&#xff0c;手机就会弹窗显示信息的大致内容。有了这个功能你就不会错过重要信息了。 电脑上也有类…...

SpringCloud Alibaba 之Nacos集群部署-高可用保证

文章目录Nacos集群部署Linux部署docker部署&#xff08;参考待验证&#xff09;Nacos 集群的工作原理Nacos 集群中 Leader 节点是如何产生的Nacos 节点间的数据同步过程官方推荐用户把所有服务列表放到一个vip下面&#xff0c;然后挂到一个域名下面。http://nacos.com:port/ope…...

Scala集合详解(第七章:集合、数组、列表、set集合、map集合、元组、队列、并行)(尚硅谷笔记)

集合第七章:集合7.1 集合简介7.1.1 不可变集合继承图7.1.2 可变集合继承图7.2 数组7.2.1 不可变数组7.2.2 可变数组7.2.3 不可变数组与可变数组的转换7.2.4 多维数组7.3 列表 List7.3.1 不可变 List7.3.2 可变 ListBuffer7.4 Set 集合7.4.1 不可变 Set7.4.2 可变 mutable.Set7.…...

定了:Python3.7,今年停止更新~

大家好&#xff0c;这里是程序员晚枫。 今天给大家分享一个来自Python官网的重要消息&#xff1a;Python3.7马上就要停止维护了&#xff0c;请不要使用了&#xff01; 官网链接&#xff1a;https://devguide.python.org/versions/ 停更的后果是什么&#xff1f; 周末翻阅Py…...

C# 业务单据号生成器(定义规则、获取编号、流水号)

系列文章 C#底层库–数据库访问帮助类&#xff08;MySQL版&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126886379 C#底层库–JSON帮助类_详细&#xff08;序列化、反序列化、list、datatable&#xff09; 本文链接&#xff1a;htt…...

Java的dump文件分析及JProfiler使用

Java的dump文件分析及JProfiler使用 1 dump文件介绍 从软件开发的角度上&#xff0c;dump文件就是当程序产生异常时&#xff0c;用来记录当时的程序状态信息&#xff08;例如堆栈的状态&#xff09;,用于程序开发定位问题。 idea配置发生OOM的时候指定路径生成dump文件 # 指定…...

sympy高斯光束模型

文章目录Gauss模型sympy封装实战sympy.phisics.optics.gaussopt集成了高斯光学中的常见对象&#xff0c;包括光线和光学元件等&#xff0c;有了这些东西&#xff0c;就可以制作一个光学仿真系统。Gauss模型 高斯光束的基本模型为 E(r,z)E0ω0ω(z)exp⁡[−r2ω2(z)]exp⁡[−ik…...

Cloudflared 内网穿透 使用记录

Cloudflared 内网穿透前提创建cloudflared tunnel我使用的服务前提 你必须要有一个域名&#xff0c;并且可以改域名的dns解析服务商到cloudflare 1.登录到cloudflare后台&#xff0c;点击添加站点 2.输入自己的域名&#xff0c;下一步选择免费套餐 3.他会搜索这个域名下已有…...

柴油发电机组的调压板

1 概述 柴油发电机组的调压板是一种用于控制发电机输出电压的装置。它通常由一块电子电路板和一个电子电路板上的电位器组成。 当发电机运行时&#xff0c;它会产生电压&#xff0c;然后通过调压板中的电路进行控制。调压板中的电路会检测输出电压的大小&#xff0c;并通过电…...

【MySQL】表操作和库操作

文章目录概念库操作1.创建数据库2.删除数据库3.选择数据库4.显示数据库列表表操作1.创建数据表CREATE2.删除数据表DROP3.插入数据INSERT4.更新数据UPDATE5.修改数据ALTER6.查询数据SELECT7.WHERE子句8.ORDER BY子句9.LIMIT子句10.GROUP BY子句11.HAVING子句使用注意事项概念 M…...