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

QT中使用图表之QChart绘制X轴为日期时间轴的折线图

显然X轴是日期时间轴的话,那么我们使用的轴类就得是QDateTimeAxis

QChart中日期时间轴的精度是毫秒

因此图表里面的数据的x值需要是一个毫秒数,才能显示出来

---------------------------------------------------------------------------------------------------------------------------------

步骤和画折线图一模一样,只不过使用的轴是日期时间轴QDateTimeAxis

1、创建图表视图

QChartView* view=new QChartView(this);

2、创建图表

QChart* chart=new QChart();

3、将图表设置给图表视图

view->setChart(chart);

4、构建x轴-日期时间轴,设置轴的属性,并将轴添加到图表中

在设置轴的范围时,传入的是2个QDateTime

QDateTimeAxis * axisX = new QDateTimeAxis(this);
axisX -> setTitleText("时间轴"); //设置轴的标题
axisX -> setRange(QDateTime(QDate(2000, 01, 01), QTime(0, 0, 0)),QDateTime(QDate(2000, 12, 31), QTime(0, 0, 0))); //设置时间轴的范围,参数是两个时期时间QDateTime
axisX -> setTickCount(13); //设置刻度个数
axisX -> setFormat("MM月dd日"); //设置刻度值的格式,和格式化时间字符串一样
axisX -> setLabelsAngle(45);
chart -> addAxis(axisX, Qt::AlignBottom); //添加轴

5、构建y轴-数值轴,设置轴的属性,并将轴添加到图表中

QValueAxis * axisY = new QValueAxis(this);
axisY -> setRange(1000, 2000);
axisY -> setTickCount(11);
axisY -> setTitleText("Y轴");
chart -> addAxis(axisY, Qt::AlignLeft);

6、构建图标里的系列(具体的图),将系列添加到图表中

在追加数据点时,x轴的是需要的是一个毫秒数,才能显示出来

QLineSeries * line = new QLineSeries(this);
line -> setName("时间轴"); //设置图例文本
//要调用毫米精度的这个函数toMSecsSinceEpoch()转成时间戳,否则显示不出来
line -> append(QDateTime(QDate(2000, 01, 01), QTime(0, 0, 0)).toMSecsSinceEpoch(), 1200);
line -> append(QDateTime(QDate(2000, 02, 01), QTime(0, 0, 0)).toMSecsSinceEpoch(), 1400);
line -> append(QDateTime(QDate(2000, 03, 01), QTime(0, 0, 0)).toMSecsSinceEpoch(), 1100);
line -> append(QDateTime(QDate(2000, 04, 01), QTime(0, 0, 0)).toMSecsSinceEpoch(), 1600);
line -> append(QDateTime(QDate(2000, 05, 01), QTime(0, 0, 0)).toMSecsSinceEpoch(), 1300);
chart -> addSeries(line);

7、将轴附加到系列,是点显示在正确的位置上

line->attachAxis(axisX);
line->attachAxis(axisY);

完整代码

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QtCharts>
#include<QHBoxLayout>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr) : QWidget(parent){resize(800,600);QHBoxLayout* h_box=new QHBoxLayout(this);DrawLineOfTime();}~Widget()=default;//绘制横坐标为时间的折线图void DrawLineOfTime(){//1、创建图表视图QChartView* view=new QChartView(this);this->layout()->addWidget(view);//2.创建图表QChart* chart=new QChart();//3.将图表设置给图表视图view->setChart(chart);//设置标题chart->setTitle("时间图");chart->legend()->show();//显示或者隐藏图例(默认显示)//4.构建x轴-日期时间轴QDateTimeAxis* axisX=new QDateTimeAxis(this);axisX->setTitleText("时间轴");//设置轴的标题axisX->setRange(QDateTime(QDate(2000,01,01),QTime(0,0,0)),QDateTime(QDate(2000,12,31),QTime(0,0,0)));//设置时间轴的范围,参数是两个时期时间QDateTimeaxisX->setTickCount(13);//设置刻度个数axisX->setFormat("MM月dd日");//设置刻度值的格式,和格式化时间字符串一样axisX->setLabelsAngle(45);chart->addAxis(axisX,Qt::AlignBottom);//添加轴//5.构建y轴-数值轴QValueAxis* axisY=new QValueAxis(this);axisY->setRange(1000,2000);axisY->setTickCount(11);axisY->setTitleText("Y轴");chart->addAxis(axisY,Qt::AlignLeft);//6.构建折线系列QLineSeries* line=new QLineSeries(this);line->setName("时间轴");//设置图例文本//要调用毫米精度的这个函数toMSecsSinceEpoch()转成时间戳,否则显示不出来line->append(QDateTime(QDate(2000,01,01),QTime(0,0,0)).toMSecsSinceEpoch(),1200);line->append(QDateTime(QDate(2000,02,01),QTime(0,0,0)).toMSecsSinceEpoch(),1400);line->append(QDateTime(QDate(2000,03,01),QTime(0,0,0)).toMSecsSinceEpoch(),1100);line->append(QDateTime(QDate(2000,04,01),QTime(0,0,0)).toMSecsSinceEpoch(),1600);line->append(QDateTime(QDate(2000,05,01),QTime(0,0,0)).toMSecsSinceEpoch(),1300);chart->addSeries(line);//7、将xy轴附加到折线line->attachAxis(axisX);line->attachAxis(axisY);}};
#endif // WIDGET_H

相关文章:

QT中使用图表之QChart绘制X轴为日期时间轴的折线图

显然X轴是日期时间轴的话&#xff0c;那么我们使用的轴类就得是QDateTimeAxis QChart中日期时间轴的精度是毫秒 因此图表里面的数据的x值需要是一个毫秒数&#xff0c;才能显示出来 --------------------------------------------------------------------------------------…...

【传知代码】短期电力负荷(论文复现)

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;传知代码 欢迎大家点赞收藏评论&#x1f60a; 目录 备注前言介绍问题背景复现&#xff1a;一. 多维特征提取的提取框架&#xff1a;二. 论文中进行性能测试的MultiTag2Vec-STLF模型&#xff1a;三…...

ubuntu20.04 加固方案-设置重复登录失败后锁定时间限制

一、编辑PAM配置文件 打开终端。 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/pam.d/common-auth文件。 sudo vim /etc/pam.d/common-auth 二、添加配置参数 在打开的配置文件中&#xff0c;添加或修改以下参数&#xff1a; auth required pam_tally2.so deny5 un…...

【综合算法学习】(第十三篇)

目录 解数独&#xff08;hard&#xff09; 题目解析 讲解算法原理 编写代码 单词搜索&#xff08;medium&#xff09; 题目解析 解析算法原理 编写代码 解数独&#xff08;hard&#xff09; 题目解析 1.题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;…...

Web3 Key Talking #4|Sui有何不同?及其发展路线图

活动时间&#xff1a; 2024 年 10 月 31 日&#xff08;周四&#xff09;20:00–21:00&#xff08;UTC8&#xff09; 会议链接&#xff1a; 腾讯会议 会议 ID &#xff1a;429–339–777 主持&#xff1a;Sanzhisanzhichazi1 嘉宾&#xff1a;uvdwangtxxl&#xff0c;Sui …...

Axios 请求超时设置无效的问题及解决方案

文章目录 Axios 请求超时设置无效的问题及解决方案1. 引言2. 理解 Axios 的超时机制2.1 Axios 超时的工作原理2.2 超时错误的处理 3. Axios 请求超时设置无效的常见原因3.1 配置错误或遗漏3.2 超时发生在建立连接之前3.3 使用了不支持的传输协议3.4 代理服务器或中间件干扰3.5 …...

数据结构+算法

一、数据结构 1、线性结构 数组&#xff1a; 访问&#xff1a;O(1)访问特定位置的元素&#xff1b;插入&#xff1a;O(n)最坏的情况发生在插入发生在数组的首部并需要移动所有元素时&#xff1b;删除&#xff1a;O(n)最坏的情况发生在删除数组的开头发生并需要移动第一元素后…...

利用ExcelJS封装一个excel表格的导出

ExcelJS 操作和写入Excel 文件。 直接上代码&#xff0c;js部分&#xff1a; exportFn.js import ExcelJS from exceljs; import { saveAs } from file-saver;export function exportExcleUtils(tHeader, filterVal, listData, fileName) {//设置工作簿属性const workbook ne…...

AI 原生时代,更要上云:百度智能云云原生创新实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 我今天分享的主题&#xff0c;是谈谈在云计算和 AI 技术快速发展和深入落地的背景下&#xff0c;百度智能云在云原生的基础设施产品和技术层面做的一些创新实践。 毋庸置疑&#xff0c;过去十几年云计算和 AI 技术是…...

C语言程序编译运行

程序功能&#xff1a;使用 printf() 输出 “Hello, World!”。 C语言源程序&#xff1a; #include <stdio.h> int main() {// printf() 中字符串需要引号printf("Hello, World!");return 0; }编译过程&#xff1a; vim hello.c gcc hello.c -o hello ./hell…...

视频点播系统扩展示例

更多的前端页面&#xff08;如视频详情页、用户注册页等&#xff09;。更复杂的业务逻辑&#xff08;如视频评论、搜索功能等&#xff09;。安全性和权限管理&#xff08;如用户角色管理、权限控制等&#xff09;。其他技术细节&#xff08;如文件上传、分页查询等&#xff09;…...

echo $? —— Linux 中的退出状态码详解

在 Linux 系统中&#xff0c;echo $? 是一个非常重要的命令&#xff0c;用于显示上一条命令的退出状态码。这个小小的符号组合可以帮助我们判断命令是否成功执行&#xff0c;同时也为编写自动化脚本提供了基础支持。本文将详细介绍 echo $? 的用法及其在实际开发中的应用。 …...

heic格式转化jpg最简单方法?快来学习这几种简单的转换方法!

heic格式转化jpg最简单方法&#xff1f;在当今的数字图像处理领域&#xff0c;HEIC格式以其卓越的压缩效率和高质量图像表现&#xff0c;正逐渐崭露头角并受到业界的深切关注&#xff0c;HEIC格式凭借先进的压缩技术&#xff0c;成功地在保持图像清晰度的同时&#xff0c;大幅度…...

力扣(leetcode)每日一题 3259 超级饮料的最大强化能量|动态规划

3259. 超级饮料的最大强化能量 题干 来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB&#xff0c;数组长度都等于 n。这两个数组分别代表 A、B 两种不同能量饮料每小时所能提供的强化能量。 你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而…...

Webserver(2.7)内存映射

目录 内存映射内存映射相关系统调用内存映射的注意事项如果对mmap的返回值(ptr)做操作&#xff0c;释放内存&#xff08;munmap&#xff09;是否能够成功&#xff1f;如果open时O_RDONLY&#xff0c;mmap时prot参数指定PROT_READ | PROT_WRITE会怎样&#xff1f;如果文件偏移量…...

vue3父子组件传值,子组件暴漏方法

1.父传子 defineProps 父组件直接通过属性绑定的方式给子组件绑定数据&#xff0c;子组件通过defineProps接收函数接收 其中v-model是完成事件绑定和事件监听的语法糖。v-model算是v-bind和v-on的简洁写法&#xff0c;等价于 <c-input ref"inputRef" :modelValue…...

Linux_04 Linux常用命令——tar

一、命令格式 tar [选项] [归档文件] [要处理的文件或目录]1、选项 c创建归档文件x解压缩归档文件z使用gzipj使用bzip2v处理过程显示信息f指定归档文件名称 2、归档文件-可指定目录及文件名 /home/wang.tar.gz 3、要处理的文件或目录 /home/study1/wang 二、常见命令 t…...

Java项目实战II基于Java+Spring Boot+MySQL的编程训练系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在当今数字…...

Rust:文档注释 //! 和 ///

在 Rust 编程语言中&#xff0c;//! 是一种特殊的文档注释&#xff08;documentation comment&#xff09;。它用于为整个模块、结构体、枚举、函数或其他项提供文档说明。与单行注释 // 和多行注释 /* ... */ 不同&#xff0c;//! 和 ///&#xff08;用于紧跟在项之前的文档注…...

练习LabVIEW第二十七题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十七题&#xff1a; 创建一个VI程序模拟温度测量。假设传感器输出电压与温度成正比。例如&#xff0c;当温度为70F时&…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

篇章一 论坛系统——前置知识

目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构​编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...

2480: 2020年06月2级T1:计算矩阵边缘元素之和

题目描述 2020年06月2级第一题题目&#xff1a;计算矩阵边缘元素之和 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 输入 第一行分别为矩阵的行数m和列数n&#xff0…...

wsl开启即闪退

[ 问题 ]&#xff1a; 在一次电脑卡住&#xff0c;强制关机重启后&#xff0c;遇到打开WSL就闪退的问题在CMD中打开WSL&#xff0c;出现如上图的描述&#xff1a; C:\Users\admin>wsl wsl: 检测到 localhost 代理配置&#xff0c;但未镜像到 WSL。NAT 模式下的 WSL 不支持…...

iOS 抖音导航栏首页一键分两列功能的实现

要实现 iOS 抖音首页导航栏的“一键分两列”功能&#xff08;通常指将单列内容切换为双列瀑布流布局&#xff09;&#xff0c;需结合自定义导航栏控件与布局动态切换逻辑。以下是关键实现步骤和技术要点&#xff0c;基于 iOS 原生开发框架&#xff08;Swift/Objective-C&#x…...

The Quantization Model of Neural Scaling

文章目录 摘要1引言2 理论3 概念验证&#xff1a;一个玩具数据集3.1 “多任务稀疏奇偶校验”数据集3.2 幂律规模和新兴能力 4 拆解大型语言模型的规模定律4.1 单token损失的分布4.2 单基因&#xff08;monogenic&#xff09;与多基因&#xff08;polygenic&#xff09;的规模曲…...