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

news/2024/7/6 22:51:29/文章来源:https://www.cnblogs.com/p309654858/p/18283070

目录
  • 参考图
  • 说明
  • 1. 项目结构
  • 2. TempChartView.pro
  • 3. main.cpp
  • 4. TemperatureSeries.qml
  • 5. main.qml
  • 详细说明

参考图

说明

  • 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.0SOURCES += \main.cppRESOURCES += 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.15ChartView {id: chartViewwidth: 800height: 600antialiasing: truetitle: "温度变化图"legend.visible: falseValueAxis {id: axisXmin: 0max: 100titleText: "时间/hh:mm:ss"}ValueAxis {id: axisYmin: 0max: 110titleText: "温度/℃"}LineSeries {id: tempSeries1name: "Temperature 1"useOpenGL: trueaxisX: axisXaxisY: axisYcolor: "red"}LineSeries {id: tempSeries2name: "Temperature 2"useOpenGL: trueaxisX: axisXaxisY: axisYcolor: "orange"}LineSeries {id: tempSeries3name: "Temperature 3"useOpenGL: trueaxisX: axisXaxisY: axisYcolor: "blue"}Timer {interval: 1000running: truerepeat: trueproperty double time: 0onTriggered: {time += 1var 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 += 1axisX.max += 1}}}
}

5. main.qml

修改以适应新组件:

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtCharts 2.15ApplicationWindow {visible: truewidth: 800height: 600title: "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组件。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序人生日记20240704|工作零食:米饭+十分米莲藕汁+饼干(减脂记录)

程序员的工作饮食减脂记录打卡 餐别:早餐 零食详情:(同事给的不算统计内) 零食名称:十分米莲藕汁配饼干 其他选择:米饭+海盐饼干。 大致热量估算: 莲藕汁约50卡,低脂全麦饼干2片约80卡,米饭约500卡,总计约630卡。 初始数据: 体重:90公斤 目标:80公斤 完成情况:完…

开发一个题库系统App和小程序的心得

开发一个题库系统App和小程序的心得序言 对于一名开发者来说,独自开发一款小程序与App,也许总会有一些疑问:1. 需要掌握哪些技术? 答:java、vue、及常规Linux命令2. 需要多少成本? 答:服务器购买,云服务器新人50多三年; 域名购买,10块的域名够用,后续每年30左右的续…

SFE人才需要具备哪些能力

SFE(销售队伍效力)人才在企业中扮演着至关重要的角色,他们需要具备一系列的能力来确保销售队伍的高效运作和业绩提升。关于SFE的角色和能力,可以从业务理解、数据洞察、向上管理以及效率提升等几个方面来通俗地解释。01 懂业务 SFE人才首先需要深入了解公司的业务,像医药企…

doris 数据库与mysql的不同之处

1.doris与mysqldoris可以使用mysql驱动进行连接,也支持mysql的部分语法。 2.具体分析清空表数据 在mysql中,清空表数据有两种方式: 一种是delete from table_name,一种是truncate table table_name。 而在doris中,清空表数据只能使用truncate table table_name。delete fr…

Kylin V10SP2安装openGauss5.0.2企业版

一、本地系统环境 [root@localhost ~]# cat /etc/os-release NAME="Kylin Linux Advanced Server" VERSION="V10 (Sword)" ID="kylin" VERSION_ID="V10" PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)" ANSI_COLO…

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitac…

常见数据摆渡系统全面比较,哪一款才是众望所归?

数据摆渡是一种利用物理隔离或特定设备,在不相连的计算机或系统之间传输数据的方法。其原理主要基于中间层的数据处理和转换,确保数据在不同系统之间能够进行有效的交换和共享。对于企业而言,数据摆渡场景主要发生在企业隔离网间。基于网络安全管理需要,企业采用防火墙等网…

PHP 真的不行了?透过 PHP 的前世今生看真相

时代造就了马云,同样也成就了 PHP。大家好,我是码农先森。 1994年我出生在湖南的农村,就在同年加拿大的拉斯姆斯勒多夫创造了 PHP,这时的 PHP 还只是用 Perl 编写的 CGI 脚本。或许是时间的巧合 PHP 变成了我后半生谋生的手段,当时拉斯姆斯勒多夫写这些脚本的目的,只是为…

智慧校园视频监控系统

智慧校园视频监控系统助力学校传统安防监控智能升级,借助智慧校园视频监控系统可以避免传统视频监控“被动”监控,有效监控价值低,不能及时预警预防的能力。智慧校园视频监控具备大规模智能检测、多场景智能分析、机器自主学习、实时告警、实时分析、全天运行,实现校园管理…

施工现场视频监控系统

施工现场视频监控系统可以从作业人员进入施工现场的入口处就开始对进入人员进行现场视频监控系统的检测识别,如果系统侦查到进入的人员着装穿戴不符合工地企业的进入要求就会立即预警提醒进入人员按照要求整改后再进入施工现场,保证进入施工现场作业人员的着装合规符合要求,…

智慧工地视频监控系统解决方案

智慧工地视频监控系统解决方案赋能传统监控“大脑”思考能力,工地现有视频监控借助智慧工地视频监控系统可以实现对工地现场施工作业的及时识别预警,保障现场作业人员的人身安全及施工企业的现场财产安全,提升施工单位的工地智能化管理水平及安全施工效率。随着科技的发展,…

软件工具推荐-2-ssh终端工具-mobaxterm

官网 https://mobaxterm.mobatek.net/ 功能 社区免费版本,几乎没啥限制 文件上传 可视化操作

Vue引入vxe-table(一个功能非常强大的表格组件)

github介绍:https://github.com/x-extends/vxe-table Vue2版本对应vxe3版本,Vue3版本对应vxe4版本 vxe3版本的官网地址:https://vxetable.cn/v3/#/table/start/install终端下载:npm install vxe-table@v3在main.js文件中引入 3.引入一个内部图标测试一下,<vxe-icon na…

Linux下编译Azerothcore源码

前言 终于开始介绍Linux下如何编译AzerothCore源码了,本文编译和架设方法较为繁琐和细致,含Ubuntu、Debian和Docker(相较之前的Docker教程来说本文是手动版),且涉及到搭建注册网站和对外开放服务部分,故再次声明:本网站均为技术研究,若参考本网站教程搭建对外服务,我均…

Docker编译Azerothcore源码

维基百科 Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 Docker容器与虚拟机类似,但二者在原理上不同…

读人工智能全传02图灵测试

读人工智能全传02图灵测试1. 图灵测试 1.1. 模仿游戏 1.2. 20世纪40年代末至50年代初,第一台计算机的出现引发了一场公开辩论,辩论主题就是这一现代科学奇迹的潜力如何 1.2.1. 这场辩论中最瞩目的贡献当归属于一本名叫《控制论》的书,由麻省理工学院数学教授诺伯特维纳(Norb…

ubuntu apt update 提示 The repository ‘http://xxx Release‘ does not have a Release file

sudo apt update && sudo apt upgrade -y提示 报错 E: The repository ‘http://xxx Release‘ does not have a Release file.编辑文件 /etc/apt/sources.list, 添加下面代码保存 deb http://nl3.archive.ubuntu.com/ubuntu jammy main restricted universe multivers…

处理器SDK Linux软件开发

处理器SDK Linux软件开发 https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-edgeai/TDA4VM/08_06_01/exports/docs/devices/TDA4VM/linux/index.html 1.概述 欢迎使用处理器SDK Linux版TDA4VM! SDK提供软件和工具,让用户在德州仪器的边缘人工智能应用处理器上有…

jira修改RoadMap里的时间格式,硬核日期格式化

jira修改roadMap里的时间格式 在插件目录找到portfolio-plugin-9.16.1.jar将他下载到本地 使用zip解压软件解压jar包 全局搜索 DD/MM/YY 将其替换YYYY/MM/DD修改后效果图全局搜索 return${l()(o.getUTCDate().toString(),2,"0")}/${t} 替换 return ${o.getUTCMonth()…