Qt QChart 曲线图表操作

embedded/2024/10/18 14:27:55/

学习目标:QChart 曲线图表操作

学习内容

QT中的QChart类提供了一个功能强大的图表绘制框架,可以根据需求方便高效地绘制各种类型的图表,主要特点如下:

  1. 支持多种常见图表类型,如线图、条形图、饼图、散点图等各种类型。开发者只需要选择合适的图表类和数据即可绘制不同图表。

  2. 采用了MVC架构模式,QChart作为模型,使用QChartView作为视图进行图表渲染输出。开发者可以方便地在界面上添加和管理多个图表。

  3. 提供了丰富的图表元素类,支持设置图表标题、坐标轴、图例、数据标签等元素。可以灵活控制图表各区域元素。

  4. 支持多种动画效果,包括图表区域和数据点的淡入淡出效果,可自定义动画参数实现丰富的交互效果。

  5. 内置了常见的坐标轴类型,同时支持自定义坐标轴格式。开发者不需要关心坐标数值的转换计算工作。

  6. 使用起来接口清晰简洁,支持C++和QML两种开发模式,重用性很强。

  7. 性能也很好,绘制成千上万个数据点依然流畅快速。常用于数据量大的实时图表等场景。

总之,QChart提供了一套专业的图表绘制解决方案。对初学图表开发的同学来说,使用起来门槛较低,是一套不错的选择。对一些复杂图表也有很好的扩展能力支持。

使用之前需要在qmake.pro中加入

qmake.por文件加入
QT       += core gui
QT +=charts

实现项目

基于代码实现QChart 曲线程序

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtCharts>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建视图对象QChartView *chartview =new QChartView(this);setCentralWidget(chartview);//创建图表QChart* chart =new QChart();chart->setTitle("图标测试-sincos");chartview->setChart(chart);//创建曲线QLineSeries* s1=new QLineSeries;QLineSeries* s2=new QLineSeries;s1->setName("Sin");s2->setName("Cos");chart->addSeries(s1);chart->addSeries(s2);//赋值qreal t=0,y1,y2,iv=0.1;for (int i=0;i<100;i++) {y1=qSin(t);s1->append(t,y1);y2=qCos(t);s2->append(t,y2);t=t+iv;}//创建坐标轴QValueAxis* ax=new QValueAxis;ax->setRange(0,10);ax->setTitleText("times(secs)");QValueAxis* ay=new QValueAxis;ay->setRange(-2,2);ay->setTitleText("values");chart->setAxisX(ax,s1);chart->setAxisY(ay,s1);chart->setAxisX(ax,s2);chart->setAxisY(ay,s2);}MainWindow::~MainWindow()
{delete ui;
}

基于gui界面制作QChart 曲线程序

qmake.por文件加入
QT       += core gui
QT +=charts

 选择GRaphicsView,右击选择提升

核心代码

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QSplineSeries *s1=new QSplineSeries(); // 创建曲线对象s1->append(0,5);s1->append(1,3);s1->append(2,5);s1->append(3,9);s1->append(4,6);s1->append(5,16);s1->append(6,10);s1->append(7,12);s1->append(8,17);s1->append(9,19);QChart *ct=ui->chartview->chart();ct->legend()->hide(); // 隐藏图表比例ct->addSeries(s1);ct->setTitle("曲线图表标题--自定义");ct->createDefaultAxes();ct->axes(Qt::Vertical).first()->setRange(0,20); // 设置y轴的范围}Widget::~Widget()
{delete ui;
}

 

 

总结

总的来说, QChart 是 Qt Charts 模块中非常强大和灵活的图表组件,可以帮助开发者快速创建各种类型的图表,并提供丰富的定制选项。

 最后附上源代码链接
对您有帮助的话,帮忙点个star

Qt demo: 学习qt过程 (gitee.com)


http://www.ppmy.cn/embedded/58748.html

相关文章

Xubuntu24.04之设置高性能模式两种方式(二百六十一)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

【Linux网络】数据链路层【下】{MAC/MTU/ARP/ICMP/NAT/PING/代理服务器原理}

文章目录 1.逐步深入数据链路层1.1MAC帧1.2由集线器到交换机1.3认识MTU 2.ARP 地址解析协议/RARP逆地址解析协议3.DNS(Domain Name System)域名从输入url后到能看到网页 发生了什么【典中典】 4.ICMP协议&#xff1a;一个网络层协议有了TCP&#xff0c;为什么还要用ICMPICMP协议…

前端面试题25(css常用的预处理器)

在前端开发领域&#xff0c;CSS预处理器在面试中经常被提及&#xff0c;其中最流行的三种预处理器是Sass、LESS和Stylus。下面分别介绍它们的特点和优势&#xff1a; 1. Sass&#xff08;Syntactically Awesome Style Sheets&#xff09; 优势&#xff1a; 变量&#xff1a;允…

基于RHCE基础搭建简单服务

目录 项目标题与需求一 配置IP地址server机node02机 二 配置web服务三 搭建dns服务器四 开启防火墙server firewalld 五 配置nfs服务器node02 nfsserver autofs 六 开启SELinux七 验证是否能访问www.rhce.com 项目标题与需求 项目标题&#xff1a; 项目需求&#xff1a; 现有…

创建SpringBoot聚合项目

创建SpringBoot聚合项目 需求&#xff1a;以仓库管理系统(warehouse management system)wms为例创建聚合项目 1、创建空项目文件夹 2、创建父工程 删掉src&#xff0c;配置夫工程的pom配置 <properties><maven.compiler.source>8</maven.compiler.source><…

飞睿智能无线高速uwb安全数据传输模块,低功耗、抗干扰超宽带uwb芯片传输速度技术新突破

在信息化的时代&#xff0c;数据传输的速度和安全性无疑是每个企业和个人都极为关注的话题。随着科技的飞速发展&#xff0c;超宽带&#xff08;Ultra-Wideband&#xff0c;简称UWB&#xff09;技术凭借其性能和广泛的应用前景&#xff0c;逐渐成为了数据传输领域的新星。今天&…

Dockerfile的使用

删除镜像 docker rmi -f ​ # 删除容器 1 迁移与备份 #1 镜像从哪来的&#xff1f;1 docker pull 拉的,远程仓库--》国内镜像站2 通过容器打包成镜像-centos镜像运行成容器---》装了vim-把装了vim的容器---》打包成镜像-以后拿到这个镜像--》再运行成容器&#xff0c;都会带…

MongoDB 全文检索

MongoDB 全文检索 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;以其灵活的数据模型和强大的查询语言而闻名。在 MongoDB 中&#xff0c;全文检索是一种功能&#xff0c;允许用户对存储在数据库中的文本数据进行复杂的搜索。全文检索对于构建搜索引擎、内容推荐系统和文本分…