前言:因为有个项目要实现将热像仪传过来的温度图像实时的显示在图表中,所以用到QChartView来显示,网上没有找到这种实时更新温度数据曲线的方法,于是自己琢磨了一下,实现了显示动态的温度曲线。
一、UI设计界面中添加QChartView控件。
1)在工程的.pro文件头部加上charts的支持,如下。
QT += charts
2)ui设计界面拖动Widget到界面上,鼠标右键选择“提升为...”菜单,在“提升的类名称:”输入框中输入QChartView,点击“添加”,将QChartView添加到列表。然后选中上面列表中添加的QChartView控件,点击“提升”按钮即可。
3)若出现编译错误,可以搜索下,能找到解决方法。
二、C++头文件中定义温度曲线图相关的变量和方法。
// 在头文件中添加
// 头文件需要引用的类
#include <QMainWindow>
#include <QSplineSeries>
#include <QDateTime>
#include <QDateTimeAxis>
#include <QValueAxis>
#include <QChart>
#include <QTimer>
// 头文件中的变量
// 上一次刷新图表的时间,结合refreshTempChartTimeGap参数控制图表刷新频率
static qint64 preUpdateTempChartTime;
// 在绘制温度曲线的控件上,显示的点个数,
// 如果每秒钟刷新一次数据(refreshTempChartTimeGap=1000),则控件上显示60个点,横轴显示60秒内的数据
const int showTempPointMaxCount = 60;
// 刷新一次温度数据的时间间隔,单位毫秒,越小刷新越快。
// 结合showTempMaxCount参数表示:图表显示的时间范围为
showTempPointMaxCount*refreshTempChartTimeGap
static const int refreshTempChartTimeGap = 1000;
// 图表第一次显示时间
QDateTime chartViewFirstShowTime;
// 添加最大、最小、平均温度的点坐标序列
QSplineSeries * globalMaxTempSplineSeres = NULL;
QSplineSeries * globalMinTempSplineSeres = NULL;
QSplineSeries * globalAvgTempSplineSeres = NULL;
// 2022.11.30 新增 @{
QChart *chart = NULL;
QDateTimeAxis *dateTimeAxisX = NULL;
QValueAxis *valueAxisY = NULL;
// @}
/** 初始化显示时间-温度的表视图**/
void initTempChartView();
/** 显示并更新时间-温度(最高、最低、平均温)图,所有温度同时更新,刷新图表函数*/
void showTempChartView(float maxTemp, float minTemp, float avgTemp);
三、 C++源文件中初始化变量和方法的具体实现。
//初始化静态变量
qint64 ClassXXX::preUpdateTempChartTime = 0;
void ClassXXX::initTempChartView()
{
// 创建图表;
if (chart == NULL) {
chart = new QChart();
}
// 创建坐标轴;
if (dateTimeAxisX == NULL) {
dateTimeAxisX = new QDateTimeAxis();
}
if (valueAxisY == NULL) {
valueAxisY = new QValueAxis();
}

本文介绍如何使用Qt的QChartView组件实现动态显示热像仪传来的实时温度数据曲线图,包括设计UI界面、定义和初始化相关变量、实现图表刷新逻辑等步骤。

880

被折叠的 条评论
为什么被折叠?



