You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在QML中基于QList存储的传感器数据绘制LineChart折线图

问题原因
  • LineSeries 属于 Qt Charts 组件,本身不是 Qt Quick 的 Item 容器类控件,不支持嵌套 Repeater 来动态生成 XYPoint 子元素。你写的 Repeater 虽然可以正常触发初始化,但生成的 XYPoint 没有被绑定到 LineSeries 的数据序列中,因此图表不会渲染折线。
  • 另外 X 轴的 max 建议做动态适配,避免数据长度更新后坐标轴范围不匹配。
修正方案

直接在 ChartView 初始化完成后,循环调用 LineSeries 的 append() 方法批量添加数据点即可,修正后代码如下:

import QtQuick 2.0
import QtCharts 2.3
Item {
    width:400
    height:600
    
    ChartView
    {
        id: chartView
        width:parent.width
        height:parent.height
        Component.onCompleted:  {
            // 批量添加数据点
            for(let i=0; i<device.AIN3data.length; i++){
                lineSeries.append(i, device.AIN3data[i])
            }
            // 更新X轴范围
            axisX.max = device.AIN3data.length
        }
        
        ValueAxis {
            id: axisX
            min: 0
            // 也可以直接绑定实现数据长度变化时自动更新轴范围
            // max: device.AIN3data.length
        }
        
        ValueAxis {
            id: axisY
            min: 0
            max: 1000
        }
        LineSeries
        {
            id: lineSeries
            axisX: axisX
            axisY:axisY
            name: "AIN3"
        }
    }
}

如果需要支持后续数据动态更新,可给 device.AIN3data 绑定数据变化信号,每次新增数据时调用 lineSeries.append() 追加新点即可。

内容的提问来源于stack exchange,提问作者Bl4ckmedia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:27:02