【Qt-23】基于QCharts绘制曲线图

一、QChart简介

QChart是Qt中专门用于绘制图表的模块,支持折线图、柱状图、饼图等常见类型。其主要组成部分有:

  • QChart:整个图表的容器,管理图表中的所有数据和图形属性
  • QChartView:继承自QGraphicsView,用于显示QChart,并且支持缩放和平移等交互操作
  • QLineSeries:折线图数据的容器,用于存储和绘制点之间的连线
  • QValueAxis:坐标轴组件,用于显示坐标轴的标签和刻度线

二、绘制静态曲线

1、QT项目pro文件中添加charts

2、.h文件添加库文件

#include <QtCharts>

注:要放在最前面,不然会报一些莫名其妙的错误。

#include <QtCharts>
#include <QtCharts/qsplineseries.h>private:QChart *chart;QSplineSeries *series;QChartView *chartview;private slots:void MainWindow::Timeout_handler();

3、.cpp文件添加

using namespace QtCharts;

 设置图标标题

chart->setTitle("平均料位");

添加曲线属性

series->setName(tr("Device 1"));
series->setColor(Qt::red);
series->setPen(QPen(Qt::red, 2));
chart->addSeries(series);

设置X轴、Y轴属性

//设置X轴属性
QValueAxis *axisX = new QValueAxis;
chart->addAxis(axisX, Qt::AlignBottom);
axisX->setRange(0, 60);
axisX->setTitleText("Time(s)");
series->attachAxis(axisX);//设置Y轴属性
QValueAxis *axisY = new QValueAxis;
chart->addAxis(axisY, Qt::AlignLeft);
axisY->setRange(0, 60);
axisY->setTitleText("料位");
series->attachAxis(axisY);

 4、拖入Widget控件,提升为QChartView控件

将图标添加到chartview中

ui->widget->setChart(chart);

 5、完整示例代码

mainwindow.h

#include <QtCharts>
#include <QtCharts/qsplineseries.h>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTprivate:Ui::MainWindow *ui;QChart *chart;QSplineSeries *series;QChartView *chartview;private slots:void MainWindow::Timeout_handler();
}

mainwindow.cpp

#include <QtSerialPort/qserialport.h>
#include <QtSerialPort/qserialportinfo.h>using namespace QtCharts;MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);chart = new QChart();series = new QSplineSeries();chartview = new QChartView();//设置图标标题chart->setTitle("平均料位");//曲线属性series->setName(tr("Device 1"));series->setColor(Qt::red);series->setPen(QPen(Qt::red, 2));chart->addSeries(series);//设置X轴属性QValueAxis *axisX = new QValueAxis;chart->addAxis(axisX, Qt::AlignBottom);//axisX->setTickCount(5);axisX->setRange(0, 30);axisX->setTitleText("Time(s)");series->attachAxis(axisX);//设置Y轴属性QValueAxis *axisY = new QValueAxis;chart->addAxis(axisY, Qt::AlignLeft);axisY->setRange(0, 90);axisY->setTitleText("料位");series->attachAxis(axisY);Timeout_handler();//将图标添加到chartview中ui->widget->setChart(chart);
}void MainWindow::Timeout_handler()
{QList<double> data = { 1.2,2.5,5.0,8.3,11.9,13.9,22.9,28.9 };QList<double> data1 = { 12.76, 45.8,64.9,11.9,36.5,74.9,23.9,55.4 };for (int i = 0; i < data.size(); i++){series->append(data.at(i), data1.at(i));}
}

 运行结果:

三、绘制动态曲线

 使用定时器动态添加数据

QTimer m_timer; // 定时器connect(&m_timer, &QTimer::timeout, this, &MainWindow::Timeout_handler);
m_timer.start(1000);

参考链接  Qt(C++)使用QChart动态显示3个设备的温度变化曲线 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/146920.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单元测试实战(六)其它

为鼓励单元测试&#xff0c;特分门别类示例各种组件的测试代码并进行解说&#xff0c;供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战&#xff08;一&#xff09;Controller 的测试 单元测试实战&#xff08;二&#xff09;Service 的测试 单元测试实战&am…

基于单片机C51全自动洗衣机仿真设计

**单片机设计介绍&#xff0c; 基于单片机C51全自动洗衣机仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机C51的全自动洗衣机仿真设计是一个复杂的项目&#xff0c;它涉及到硬件和软件的设计和实现。以下是对这…

如何进行统一异常处理

我们在项目中可以使用ControllerAdvice注解结合ExceptionHandler用于全局异常的处理&#xff0c;ControllerAdvice学名是Controller增强器&#xff0c;作用是给Controller控制器添加统一的操作或处理。此注解结合方法型注解ExceptionHandler&#xff0c;可用于捕获Controller中…

【C++11】weak_ptr智能指针使用详解

系列文章目录 【C11】智能指针与动态内存 文章目录 系列文章目录简介一、头文件二、初始化及使用1. 使用一个shared_ptr来初始化 三、循环引用3.1 循环引用3.2 循环引用 解决方法 简介 在C编程中&#xff0c;处理循环引用是一个常见的问题。循环引用可能导致内存泄漏和资源管…

镀膜与干刻中的平均自由程是什么?

在芯片制造中&#xff0c;镀膜和干刻是其中的重要环节&#xff0c;通常要用到CVD&#xff0c;RIE等技术&#xff0c;对材料表面进行纳米级的精细操作。在这些工序中&#xff0c;原子&#xff0c;分子&#xff0c;离子等&#xff0c;会在气体或真空中进行自由运动&#xff0c;直…

IDEA 高分辨率卡顿优化

VM设置优化 -Dsun.java2d.uiScale.enabledfalse 增加该条设置&#xff0c;关闭高分切换 https://intellij-support.jetbrains.com/hc/en-us/articles/115001260010-Troubleshooting-IDE-scaling-DPI-issues-on-Windows​intellij-support.jetbrains.com/hc/en-us/articles/1…

金融业务系统: Service Mesh用于安全微服务集成

随着云计算的不断演进&#xff0c;微服务架构变得日益复杂。为了有效地管理这种复杂性&#xff0c;人们开始采用服务网格。在本文中&#xff0c;我们将解释什么是Service Mesh&#xff0c;为什么它对现代云架构至关重要&#xff0c;以及它是如何解决开发人员今天面临的一些最紧…

py 字符串转INT

在Python中&#xff0c;可以使用内置的int()函数将字符串转换为整数&#xff08;INT&#xff09;。以下是一个简单的示例&#xff1a; s "123" i int(s) print(i) # 输出&#xff1a;123在上述代码中&#xff0c;我们首先定义了一个字符串s&#xff0c;它包含了一…

centos三台主机配置互信ssh登录

1. 修改hosts信息 1.1三台主机上分别修改hosts文件 vi /etc/hosts1.2 三台主机分别填入如下内容&#xff0c;ip地址需要检查正确 192.168.126.223 node1 192.168.126.224 node2 192.168.126.225 node32. 秘钥生成和分发 2.1 在三台主机上分别生成秘钥 命令输入后&#xff…

剑指JUC原理-19.线程安全集合

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…

IDEA-git commit log 线

一、本地代码颜色标识 红色&#xff1a;新建的文件&#xff0c;没有add到git本地仓库蓝色&#xff1a;修改的文件&#xff0c;没有提交到git远程仓库绿色&#xff1a;已添加到git本地仓库&#xff0c;没有提交到git远程仓库灰色&#xff1a;删除的文件&#xff0c;没有提交到g…

苍穹外卖--实现公共字段自动填充

也就是在插入或者更新的时候为指定字段赋予指定的值&#xff0c;使用它的好处就是可以统一对这些字段进行处理&#xff0c;避免了重复代码。在上述的问题分析中&#xff0c;我们提到有四个公共字段&#xff0c;需要在新增/更新中进行赋值操作。 实现步骤&#xff1a;* 1). 自定…

Redis 19 事务

Redis通过MULTI、EXEC、WATCH等命令来实现事务&#xff08;transaction&#xff09;功能。事务提供了一种将多个命令请求打包&#xff0c;然后一次性、按顺序地执行多个命令的机制&#xff0c;并且在事务执行期间&#xff0c;服务器不会中断事务而改去执行其他客户端的命令请求…

curl网络请求命令

curl简介 1、什么是curl2、curl命令的基本使用 1、什么是curl CURL&#xff08;CommandLine Uniform Resource Locator&#xff09;是一个利用URL语法&#xff0c;在命令行终端下使用的网络请求工具&#xff0c;支持HTTP、HTTPS、FTP等协议 Linux、MAC系统一般默认已安装好CUR…

169. 多数元素 --力扣 --JAVA

题目 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 解题思路 利用Arrays自带的函数对数组进行排序&#xff1b;记录起始位置和…

QT专栏1 -Qt安装教程

#本文时间2023年11月18日&#xff0c;Qt 6.6# Qt 安装简要说明&#xff1a; Qt有两个版本一个是商业版本&#xff08;收费&#xff09;&#xff0c;另一个是开源版本&#xff08;免费&#xff09;&#xff1b; 打开安装程序时&#xff0c;通过判断账号是否有公司&#xff0c;安…

基于SSM的学生疫情信息管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

100套Axure RP大数据可视化大屏模板及通用组件库

106套Axure RP大数据可视化大屏模板包括了多种实用美观的可视化组件库及行业模板库&#xff0c;行业模板涵盖&#xff1a;金融、教育、医疗、政府、交通、制造等多个行业提供设计参考。 随着大数据的发展&#xff0c;可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再…

高斯积分-Gaussian Quadrature

https://mathworld.wolfram.com/GaussianQuadrature.html

mmdet 3.x 打印各类指标

和mmdet2.x中的修改地方不一样&#xff0c;在mmdet/evaluation/metrics/coco_metric.py中第72行将classwise设为True就可以打印各类指标了 但是在test的时候一直都是什么指标都不打印&#xff0c;不管是上面总的指标还是下面的各类指标&#xff0c;暂时不知道怎么处理 找到原因…