QT 使用图表

news2024/11/23 10:40:13

目录

1、概念

1.1 坐标轴-QAbstractAxis

1.2 系列-QAbstractSeries

1.3 图例-Legend

1.4 图表-QChart

1.5 视图-QChartView

2、 QT 折线图

2.1 Qt 折线图介绍

2.2 Qt 折线图实现


 

Qt 图表是专门用来数据可视化的控件

Qt 图表包含折线、饼图、棒图、散点图、范围图等。

使用 Qt 图表时,需要添加 Qt += charts

包含头文件 #include

1、概念

1.1 坐标轴-QAbstractAxis

图表中,一般都有 X、Y 坐标轴,复杂一些的还带有 Z 轴。对应到 Qt 的图表也有 X、Y 轴对象。但是 今天,我们先不展开介绍。如果我们不创建轴坐标对应的对象,可以使用 Qt 的默认轴对象。后面我们会介绍用 法。

1.2 系列-QAbstractSeries

不论是曲线、饼图、棒图还是其他图表,其中展示的内容本质都是数据。一条曲线是一组数据,一个饼图也 对应一组数据。在 Qt Charts 中,这些一组组的数据被称作系列。对应不同类型的图表 Qt 提供了不同的系列。 系列除了负责存储、访问数据,应该还提供了数据的绘制方法,比如折线图和曲线图分别对应 QLineSerie 和 QSPLineSerie。我们可以用不同的系列达到不同的展示目的。

1.3 图例-Legend

类似于 Excel,Qt Charts 中也提供了图例,并且还可以显示或者隐藏图例。

1.4 图表-QChart

Qt 提供了 QChart 类来封装前面所说的内容,比如坐标轴、系列、图例等。QChart 承担了一个组织、管理 的角色。QChart 派生自 QGraphicsObject,因此它实际上是一个图元 item。我们可以从 QChart 获取到坐标轴对 象、数据系列对象、图例等等,并且可以设置图表的主题、背景色等样式信息。

1.5 视图-QChartView

 负责 QChart 的展示。QChart 本身只负责图表内容的组织、管理。图表的展示由视图负责,这个视图就是 QChartView。QChartView 派生自 QGraphicsView,只是它专门提供了几个面向 QChart 的接口,比如 setChart (QChart*)等。


2、 QT 折线图

2.1 Qt 折线图介绍

 Qt 折线图使用的类是 QlineSeries。

Qt 折线图包含如下几个部分: ① 坐标轴(x,y) ② 线条 ③ 参考背景线

2.2 Qt 折线图实现

Qt 折线图实现过程主要包括以下几个步骤:

1. 新建一个 QChart 图表对象 chart;

2. 往 chart 添加坐标轴(x,y 轴);

3. 在 ui 里提升一个 QWidget 成 QChartView,作为 chart 的视图;

4. 在 chart 里添加新的折线对象 QLineSeries(可添加多条)

5. 添加数据

6. 清除数据

一.新建一个 QChart 图表对象 chart

QChart *chart = new QChart();
 chart->legend()->setVisible(true);
 QFont font;
 font.setPixelSize(50);
chart->setTitleFont(font);
 chart->setTitle("小红体重曲线");//设置图表标题

二.往 chart 添加坐标轴(x 轴,y 轴)

QValueAxis *axisX;
 axisX = new QValueAxis();
axisX->setTitleText("时间"); //设置坐标轴的标题
 axisX->setLabelFormat("%i"); //设置坐标格式,类似于 printf
axisX->setTickCount(10); //坐标被分成多少格
axisX->setRange(0, 60); //设置范围
//Bottom 是底部的意思,意思是坐标轴是放在底部的,也就是 X 轴
//相似的还有 Qt::AlignLeft...
chart->addAxis(axisX, Qt::AlignBottom);
QValueAxis *axisY;
 axisY = new QValueAxis();
 axisY->setTitleText("体重"); //设置坐标轴的标题
 axisY->setLabelFormat("%i"); //设置坐标格式
 axisY->setTickCount(5); //坐标被分成多少格
axisY->setRange(0, 200); //设置范围
chart->addAxis(axisY, Qt::AlignLeft);

三.在 ui 里提升一个 QWidget 成 QChartView,作为 chart 的视图;

四.在 chart 里添加新的折线对象 QLineSeries(可添加多条)

line = new QLineSeries;
line->setName("体重曲线"); //设置线的名字
line->setColor(Qt::red); //设置线的颜色
 chart->addSeries(line); //把曲线加到图表里 //设置曲线遵循哪个坐标,它会自动
识别 x,y 轴,因为坐标轴里的 AlignBottom/AlignLeft 属性
line->attachAxis(axisX);
line->attachAxis(axisY);
ui->chartView->setChart(chart);//把拆线添加到控件

 五.添加数据,使用定时器模拟

1. 定时器初始化

QTimer *timer = new QTimer(this);
 connect(timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
x = 0;
 timer->start(1000);

2. 定时器槽函数

void Widget::doTimeoutSlot()
{
 y = qrand() % 200; //生成随机数,范围在 200 以内,因为我们 y 轴最大是 200
 qDebug()<<"y="<<y;
 if(x > 60){
x = 0;
 line->clear();
 }else{
 line->append(x, y);
 x++;
 }
}

六.清除数据 line->clear();

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

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

相关文章

英文翻译照片怎么做?掌握这个方法轻松翻译

在现代社会中&#xff0c;英文已经成为了一种全球性的语言&#xff0c;因此&#xff0c;我们在阅读文章或者查看图片时&#xff0c;经常会遇到英文的内容。为了更好地理解这些英文内容&#xff0c;我们需要将其翻译成中文。在本文中&#xff0c;我将探讨图片中英文内容翻译的方…

mysql通过binlog日志恢复误删数据

1、先查看binlog功能是否开启 show variables like %log_bin%;log_bin为ON说明可以使用binlog恢复&#xff0c;如果为OFF说明没有开启binlog。 2、删除部分数据做测试 3、查找binlog文件位置 show variables like %datadir%;cd /var/lib/mysqlls -l删除数据时间是在文件154与…

2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

文章目录 React&#xff1a;构建用户界面的首选Vue&#xff1a;简单优雅的前端框架Angular&#xff1a;Google支持的全面框架Node.js&#xff1a;服务器端的JavaScript运行环境比较不同框架的优势与劣势React&#xff1a;Vue&#xff1a;Angular&#xff1a;Node.js&#xff1a…

数字档案长期保存EEP文件管理和四性检测系统工具

数字(电子)档案EEP封装包工具软件&#xff08;nhdeep&#xff09;&#xff0c;可以生成和导入长期保存标准格式的EEP封装文件&#xff0c;进行目录查看和条目信息查看&#xff0c;以及原文文件的查看。并提供对长期保存EEP封装文件的四性检测功&#xff0c;能保障封装文件质量。…

IP地址SSL证书

在许多企业用例中&#xff0c;公司需要SSL证书作为IP地址。公司使用IP地址通过Internet或Intranet访问各种类型的应用程序。根据组织策略&#xff0c;您希望使用SSL证书保护IP地址。 在本文中&#xff0c;我将向您解释获取IP地址SSL证书的过程&#xff0c;以及哪种类型的SSL证…

三菱PLC与变频器之间无线通讯

在工业现场由PLC远程控制变频器的应用非常常见&#xff0c;如果挖沟布线不便或者变频器在移动设备上&#xff0c;那么采用无线通讯就是最佳方案。 这里我们选用最常用的三菱 FX2N PLC和三菱变频器为例&#xff0c;并结合日系plc专用无线通讯终端DTD435M来说明PLC与变频器之间的…

MySQL 运维篇+单机多实例多版本部署初始化缺少sys库概述

说明&#xff1a;本文讲述MySQL在单机多实例多版本部署情况下初始化后缺少sys库问题方案&#xff1a;初始化数据库前建议暂时将其他实例的Default options&#xff08;/etc/my.cnf等&#xff09;重命名结论&#xff1a;初始化新实例时即使指定相关参数也有可能会受到默认参数的…

浙江某半导体厂房配电室电气节点无线测温方案

摘 要&#xff1a;半导体被誉为“制造业的大脑”&#xff0c;在关系国家安全和国民经济命脉的主要行业和关键领域占据支配地位&#xff0c;是国民经济的重要支柱。 随着数字技术的发展和数字经济在国民经济中所占比重越来越高&#xff0c;半导体产业的重要性还会进一步提升。安…

chat聊天对话智能机器人Model大模型Platform大平台Data大数据支持

解决工作生活中遇到的任何问题&#xff0c;情感陪护&#xff0c;闲聊扯淡&#xff0c;无所不能。 图像描述生成&#xff08;Image Caption&#xff09;是一个融合计算机视觉、自然语言处理和机器学习的综合问题&#xff0c;它类似于翻译一幅图片为一段描述文字。该任务对于人类…

SpringBoot + MyBatisPlus中乐观锁的实现 (精简demo)

乐观锁加注解Version后不需要手动进行加1操作。乐观锁是一种用于解决并发冲突的机制&#xff0c;在数据库中用于保护数据的一致性。Version注解是MyBatisPlus框架中的乐观锁注解&#xff0c;它会在更新数据时自动检查版本号是否一致&#xff0c;如果一致则进行更新操作&#xf…

混合App开发可以怎么玩?

随着越来越多的软件都是以saas或者云端的形式提供&#xff0c;因此&#xff0c;混合App的开发占比越来越大&#xff0c;大厂们纷纷都转向此类的开发。最近看到一些文章&#xff0c;混合App的开发&#xff0c;还能用计算机之父的那套理论--冯诺依曼结构来开开脑洞。 本篇文章&a…

多线程——学习笔记 1

目录 多线程的了解多线程并行和并发的区别Java程序运行原理多线程程序实现的方式1.继承Thread2.实现Runnable 多线程(实现Runnable的原理&#xff09;实现多线程两种方式的区别匿名内部类实现线程的两种方式获取线程名字和设置名字获取当前线程的对象——hread.currentThread()…

allegro env 文件路径

很多人说在cadence安装路径里修改env文件不生效&#xff0c;或者在安装目录里找不到env文件路径。 原因可能是 用户环境变量中的HOME路径修改导致的&#xff0c;allegro会抓取HOME变量定义的路径中的env文件。所以你如果要修改env文件&#xff0c;最好看看HOME路径&#xff0c…

窗口函数大揭秘!轻松计算数据累计占比,玩转数据分析的绝佳利器

上一篇文章《如何用窗口函数实现排名计算》中小编为大家介绍了窗口函数在排名计算场景中的应用&#xff0c;但实际上窗口函数除了可以进行单行计算&#xff0c;还可以在每行上打开一个指定大小的计算窗口&#xff0c;这个计算窗口可以由SQL中的语句具体指定&#xff0c;大到整个…

LTMC S/4HANA 2022 – 迁移您的数据

翻译一篇&#xff0c;估计很少人用过这个LTMC功能&#xff0c;更不用说&#xff0c;LTMOM了。一个还没开始用已经被弃用的事务代码&#xff1a; 在这篇博文中&#xff0c;我将解释如何在 S/4HANA 2022 版本中通过“迁移您的数据”应用程序逐步执行数据迁移。如您所知&#xff0…

UE4/5Niagara粒子特效之Niagara_Particles官方案例:2.4->3.2

之前的案例 UE4/5Niagara粒子特效之Niagara_Particles官方案例&#xff1a;1.1-&#xff1e;1.4_多方通行8的博客-CSDN博客 UE4/5Niagara粒子特效之Niagara_Particles官方案例&#xff1a;1.5-&#xff1e;2.3_多方通行8的博客-CSDN博客 2.4 Location Events 这次的项目和之…

VS2022解决Protobuf compiler version 23.4 doesn‘t match library version 4.23.4

在使用Visual Studio 2022MinGWCMake作为开发环境时&#xff0c;如果项目中使用了Protobuf&#xff0c;则在CMake运行时&#xff0c;可能会出现Protobuf compiler version 23.4 doesnt match library version 4.23.4的问题&#xff1a; 1> [CMake] CMake Warning at C:/Pro…

一体全栈、开箱即用!麒麟信安与灵雀云携手打造“操作系统+云平台”联合解决方案

近日麒麟信安与北京凌云雀科技有限公司&#xff08;以下简称“灵雀云”&#xff09;开展生态合作&#xff0c;共同完成了灵雀云企业级全栈云原生平台ACPV3与麒麟信安操作系统V3等系列产品的兼容性认证测试。基于双方产品兼容性良好、稳定运行、性能表现卓越&#xff0c;麒麟信安…

书单模板空白图怎么做?分享个简单的方法

在当今数字化时代&#xff0c;越来越多的人开始将书单制作成具有视觉效果的视频&#xff0c;以此来吸引更多的读者。本文将介绍如何制作书单模板的空白图以及一些制作书单视频的方法。 制作书单模板空白图 书单模板空白图是一种用于书单视频制作的基础模板&#xff0c;通过制作…

不负众望~历时4年修炼,这本册子终于成书了(文末赠书)

名字&#xff1a;阿玥的小东东 学习&#xff1a;Python、C/C 主页链接&#xff1a;阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 精进Spring Boot首选读物 “小册”变“大书”&#xff0c;彻底弄懂Spring Boot 全方位配套资源…