首页 > 其他分享 >QChartView显示实时更新的温度曲线图(二)

QChartView显示实时更新的温度曲线图(二)

时间:2024-07-04 10:22:14浏览次数:10  
标签:Qt 曲线图 axisX 实时 qml time import QChartView main

目录

参考图

说明

  • Qt Charts 提供了一系列使用图表功能的简单方法。它使用Qt Graphics View Framework 图形视图框架,因此可以很容易集成到用户界面。可以使用Qt Charts作为QWidgets, QGraphicsWidget, 或者 QML类型。

  • 使用Qt Charts时:需要在.pro文件中添加 QT += charts

  • Qt Charts提供了如下图表类型:
    折线图和曲线图
    面积图和散点图
    柱状图
    饼状图
    箱形图
    蜡烛图
    极坐标图

1. 项目结构

TempChartView/
├── main.cpp
├── main.qml
├── qml.qrc
├── TemperatureSeries.qml
├── TempChartView.pro

2. TempChartView.pro

QT += charts qml quick

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

RESOURCES += qml.qrc

# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =

# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target


3. main.cpp

#include <QtWidgets/QApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QtQuick/QQuickView>
#include <QtCore/QDir>
#include <QtQml/QQmlEngine>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

     QQmlApplicationEngine engine;
     engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

     if (engine.rootObjects().isEmpty())
         return -1;

     return app.exec();

}

4. TemperatureSeries.qml

实现样式和多条曲线:

import QtQuick 2.15
import QtCharts 2.15
import QtQuick.Controls 2.15

ChartView {
    id: chartView
    width: 800
    height: 600
    antialiasing: true

    title: "温度变化图"
    legend.visible: false

    ValueAxis {
        id: axisX
        min: 0
        max: 100
        titleText: "时间/hh:mm:ss"
    }

    ValueAxis {
        id: axisY
        min: 0
        max: 110
        titleText: "温度/℃"
    }

    LineSeries {
        id: tempSeries1
        name: "Temperature 1"
        useOpenGL: true
        axisX: axisX
        axisY: axisY
        color: "red"
    }

    LineSeries {
        id: tempSeries2
        name: "Temperature 2"
        useOpenGL: true
        axisX: axisX
        axisY: axisY
        color: "orange"
    }

    LineSeries {
        id: tempSeries3
        name: "Temperature 3"
        useOpenGL: true
        axisX: axisX
        axisY: axisY
        color: "blue"
    }

    Timer {
        interval: 1000
        running: true
        repeat: true
        property double time: 0
        onTriggered: {
            time += 1
            var newTemp1 = 85 + (Math.sin(time / 10) * 5)
            var newTemp2 = 60 + (Math.sin(time / 10) * 5)
            var newTemp3 = 35 + (Math.sin(time / 10) * 5)
            tempSeries1.append(time, newTemp1)
            tempSeries2.append(time, newTemp2)
            tempSeries3.append(time, newTemp3)

            if (tempSeries1.count > 100) {
                tempSeries1.remove(0)
                tempSeries2.remove(0)
                tempSeries3.remove(0)
                axisX.min += 1
                axisX.max += 1
            }
        }
    }
}

5. main.qml

修改以适应新组件:

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtCharts 2.15

ApplicationWindow {
    visible: true
    width: 800
    height: 600
    title: "Temperature Chart Example"

    TemperatureSeries {
        anchors.fill: parent
    }
}

详细说明

  • main.cpp: 初始化QML应用程序并加载主QML文件main.qml
  • TemperatureSeries.qml:
    • ChartView: 用于显示图表。
    • ValueAxis: 定义X轴和Y轴的范围和标签。
    • LineSeries: 用于显示多条温度数据线,每条线代表不同的温度曲线,并指定颜色。
    • Timer: 每秒生成三个随机温度值并添加到LineSeries中。如果数据点超过100个,则移除最早的数据点,并调整X轴范围,以实现实时更新效果。
  • main.qml: 定义应用程序窗口,并包含TemperatureSeries组件。

标签:Qt,曲线图,axisX,实时,qml,time,import,QChartView,main
From: https://www.cnblogs.com/p309654858/p/18283070

相关文章

  • 对标 GPT-4o 的开源实时语音多模态模型:Moshi
     是由法国的AI实验室 Kyutai 推出的实时语音多模态模型,支持听、说、看,最关键的是你现在就可以在浏览器中使用,如果这个链接延迟高,可以试试这个,无需输入邮箱,点击Joinqueue即可。简单体验了下,比较笨笨的,延迟很低,可以随时打断,如果你一直不说话还会主动找你,很接近GPT-4o......
  • 使用阿里云语音服务实现设备异常实时通知
    随着物联网的普及,设备异常通知方式也变得多种多样。从传统的后台异常列表,到短信通知,再到微信消息通知等。然而,当设备探测到火警等紧急异常时,需要实时通知到相关人员。本文将介绍如何借助阿里云的语音服务来实现这一功能。1.准备工作1.1资质申请首先,登录阿里云语音服务,进行......
  • 微软预计年底实现实时语音界面;硅基智能开源 AI 数字人交互平台 Duix丨 RTE 开发者日报
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • 【别再为可视化工具付费了!】智慧交通实时路况监测,这款免费可视化工具的功能超乎想象
    在智慧交通领域,实时路况监测是确保城市交通高效运转的关键。山海鲸可视化作为一款免费的可视化工具,其功能非常强大。面对智慧交通的复杂需求,山海鲸可视化凭借其二三维融合、易用性、安全性和高质量的画面渲染等特色,成为智慧交通管理的不二选择。山海鲸可视化的二三维融合功能是......
  • STM32第十四课:低功耗模式和RTC实时时钟
    文章目录需求一、低功耗模式1.睡眠模式2.停止模式3.待机模式二、RTC实现实时时钟1.寄存器配置流程2.标准库开发3.主函数调用三、需求实现代码需求1.实现睡眠模式、停止模式和待机模式。2.实现RTC实时时间显示。一、低功耗模式  电源对电子设备的重要性不言......
  • Character AI 推出实时语音通话功能;AirPods 将配备红外摄像头模组丨 RTE 开发者日报
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,......
  • 利用阿里云API获取实时天气信息|C语言Linux网络编程练手小项目
    文章目录目录文章目录前言一、HTTP数据请求1.HTTP概述2.数据请求方式3.JSON格式二、阿里云API获取,使用1.购买(白嫖)API接口步骤2.API使用代码编写3.编译程序 4.运行结果总结前言在项目开发时常常需要显示各种信息,如时间、天气、温度、空气质量指数等等。在......
  • MATLAB|实时机会约束决策及其在电力系统中的应用
    目录一、概述二、数学模型 2.1 机会约束决策的情景方法2.2 带有测量的情景方法三、机会约束决策的一种快速方法3.1 通过仿射变换进行近似调节3.2 可行域的仿射变换3.3 两阶段决策算法四、算例——配电网4.1 防止过电压的有功功率削减4.2 数值模拟 4.3 ......
  • 基于深度学习网络的USB摄像头实时视频采集与人脸检测matlab仿真
    1.算法运行效果图预览将摄像头对这播放视频的显示器,然后进行识别,识别结果如下:  本课题中,使用的USB摄像头为:   2.算法运行软件版本matlab2022a 3.部分核心程序程序中包括MATLAB读取摄像头的配置方法,摄像头配置工具箱安装文件。 whiletoc<runtime......