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

Qt Chart 模块化封装曲线图

一 版本说明

二 完成示例

此文章包含:曲线轴设置,曲线切换,单条曲线显示,坐标轴。。。

三 曲线图UI创建

在UI界面拖放一个QWidget,然后在 Widget里面放一个 graphicsView 

四 代码介绍

1 头文件

#include <QString>
#include <QTimer>
#include <QMessageBox>
#include <QDateTime>
#include <QFile>
#include <QFileDialog>
#include <QDebug>
#include <QFileInfo>
#include <QSerialPortInfo>
#include <QtSerialPort/QSerialPort>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QValueAxis>
#include <QPointF>
#include <QAxObject>
#include <QChartView>
#include <QtMath>
#include <QMimeData>//曲线函数声明  一定要包含
QT_CHARTS_USE_NAMESPACE#define MAX_X   (15)    //X轴长度
#define X_LEN   (15)    //X分辨率
#define Y_LEN   (10)    //Y分辨率#define TEC_MIN_Y   (-10)   //Y轴最小长度
#define TEC_MAX_Y   (85)   //Y轴最大长度QTimer *timer1;//用作曲线点定时添加QLabel *label_coordinate;//坐标显示QGraphicsLineItem *x_line, *y_line;//十字线double qcuisition_interval;//采样时间间隔 我这里采用分钟记数,所以一秒钟累加 1.0f / 60.0fdouble record_x_min, record_x_max;//X轴记录点//两条线段
QChart tec_1_2_temperature_chart;
QValueAxis tec_1_2_temperature_axisX, tec_1_2_temperature_axisY;//X轴和Y轴
QLineSeries line_tec_1_2_set_temperature[2], line_tec_1_2_current_temperature[2];//设置温度,实时温度
QString line_tec_1_2_set_temperature_name[2] = {"TEC1设置", "TEC2设置"};
QString line_tec_1_2_current_temperature_name[2] = {"TEC1实时", "TEC2实时"};
QPen line_tec_1_2_set_temperature_clocr[2] = {QColor(237, 28, 36), QColor(181, 206, 212)};
QPen line_tec_1_2_current_temperature_cloor[2] = {QColor(255, 127, 39), QColor(63, 72, 204)};
double tec_1_2_temperature_record_y_min = TEC_MIN_Y, tec_1_2_temperature_record_y_max = TEC_MAX_Y;//记录X,Y位置
double tec_1_2_temperature_count = 0;//记录当采集点

2 cpp文件

2.1 初始化函数

/**
* @brief 曲线图 初始化
* @param char图表类
* @param axisx:X轴
* @param x_name:x轴名字
* @param axisy:Y轴
* @param y_min:Y轴最小长度
* @param y_max:Y轴最大长度
* @param y_name:Y轴名字
* @retval None
*/
void interface_chart::Chart_Init(QChart &chart,QValueAxis &axisx, QString x_name,QValueAxis &axisy, int y_min, int y_max, QString y_name)
{int font_size = 11;QFont font("Microsoft YaHei", font_size);//微软雅黑chart.legend()->setFont(font);  // 设置字体及大小chart.setAnimationOptions(QChart::SeriesAnimations);//移动动画//设置坐标轴显示的范围axisx.setMin(0);axisx.setMax(MAX_X);axisy.setMin(y_min);axisy.setMax(y_max);//设置坐标轴上的格点axisx.setTickCount(X_LEN + 1);axisy.setTickCount(Y_LEN);//设置坐标轴字体大小axisx.setTitleFont(font);axisx.setLabelsFont(font);axisy.setTitleFont(font);axisy.setLabelsFont(font);//设置名字axisx.setTitleText(x_name);axisy.setTitleText(y_na
http://www.lryc.cn/news/497987.html

相关文章:

  • 【AI系统】MobileFormer
  • python数据分析之爬虫基础:解析
  • uniapp中导入uview或者uview plus
  • 【LeetCode】122.买卖股票的最佳时机II
  • openGauss开源数据库实战十九
  • 恶补英语初级第18天,《询问他人的喜好(上)》
  • centos 报 ping: www.baidu.com: Name or service not known
  • Python:使用随机森林分类器进行模型评估:ROC 曲线与 AUC 指标计算
  • 数据库表约束完全指南:提升数据完整性和准确性
  • 【JavaEE】多线程(6)
  • BERT和RoBERTa;双向表示与单向的简单理解
  • Pytorch使用手册-计算机视觉迁移学习教程(专题十三)
  • Jackson - Java对象与JSON相互转换
  • 怎麼解決路由器IP地址衝突?
  • 趣味数学 2.3.7 | 完全免费,无注册登录,简约纯净
  • Oracle ASM特性介绍和增删盘操作
  • 深度优先搜索迷宫路径
  • 多媒体技术的 发展阶段----高中信息技术教资面试
  • 行为型设计模式之《责任链模式》实践
  • 中酱黑松露手工古法酱油,邂逅独特 “酱油红”
  • Java NIO channel
  • 智能交通(8)——腾讯开悟智能交通信号灯调度赛道
  • ip所属地址是什么意思?怎么改ip地址归属地
  • 攻防世界 ctf刷题 新手区1-10
  • Node做一个自动删除指定文件和文件夹工具
  • 陈若尧新歌《一来二去》陆续登陆全球音乐平台
  • 【Docker】针对开发环境、测试环境、生产环境如何编排?
  • 小程序项目的基本组成结构
  • 001-mysql安装
  • 预训练模型与ChatGPT:自然语言处理的革新与前景