QT图表QML滚动X轴(毫秒)

QT图表QML滚动X轴(毫秒),qt,qml,Qt,Qml,我试图在QT图表QML中显示实时数据 我用计时器每25毫秒更新一次Y值 x轴应显示动态5秒窗口(当前时间+-2500毫秒)。如何使x轴动态显示实时更新的5秒窗口 到目前为止,我的计时器是正确的,每25毫秒触发一次 我修改了其中一个QT示例,到目前为止,实时更新工作正常 import QtQuick 2.0 import QtCharts 2.0 Item { anchors.fill: parent property double startTime: 0 Char

我试图在QT图表QML中显示实时数据

我用计时器每25毫秒更新一次Y值 x轴应显示动态5秒窗口(当前时间+-2500毫秒)。如何使x轴动态显示实时更新的5秒窗口

到目前为止,我的计时器是正确的,每25毫秒触发一次

我修改了其中一个QT示例,到目前为止,实时更新工作正常

import QtQuick 2.0
import QtCharts 2.0

Item {
    anchors.fill: parent

    property double startTime: 0

    ChartView {
        title: startTime
        anchors.fill: parent
        legend.visible: false
        antialiasing: true

        ValueAxis {
            id: axisX
            min: 0
            max: 10
            tickCount: 5
        }

        ValueAxis {
            id: axisY1
            min: -0.5
            max: 1.5
        }
        ValueAxis {
            id: axisY2
            min: 0
            max: 1000
        }

        SplineSeries {
            id: series1
            axisX: axisX
            axisY: axisY1
        }

        SplineSeries {
            id: series2
            axisX: axisX
            axisY: axisY2
        }
    }

    // Add data dynamically to the series
    Timer {
        id: refreshTimer
        interval: 25
        running: true
        repeat: true
        onTriggered: {
            series1.append(2, Dashboard.gpsSpeed);
            series2.append(10, Dashboard.gpsAltitude);
            console.log ("Timer Triggered");
    }
 }

}

这就是我的代码现在的样子,我还删除了用户不再可见的数据点

// Add data dynamically to the series
Timer {
    property int amountOfData: 0 //So we know when we need to start
    property int timeline: 0 // Start of the timeline
    id: refreshTimer
    interval: 50
    running: false
    repeat: true
    onTriggered: {
        timeline++;
        series1.append(timeline, Dashboard.revs);
        series2.append(timeline, Dashboard.speed);

        if(amountOfData > axisX.max){
            axisX.min++;
            axisX.max++;
        }else{
            amountOfData++; //This else is just to stop incrementing the variable unnecessarily
        }
        //remove all data points that are not visible anymore
        if (timeline > 100){
            series1.remove(1);
            series2.remove(1);


        }
    }
}

如果我理解正确,您希望x轴与当前数据动态滚动。因此,需要调整相应轴的“最小”和“最大”属性

Timer{
    property int amountOfData: 0 //So we know when we need to start scrolling
    id: refreshTimer
    interval: 25
    running: true 
    repeat: true
    onTriggered: {
        series1.append(2, Dashboard.gpsSpeed);
        series2.append(10, Dashboard.gpsAltitude);

        if(amountOfData > axisX.max){
            axisX.min++;
            axisX.max++;
        }else{
            amountOfData++; //This else is just to stop incrementing the variable unnecessarily
        }
    }
}

我是否正确理解您希望x轴能够动态滚动?是的,正是这样不幸的是,if(timeline>100){series1.remove(1);series2.remove(1);出于某种原因也会删除屏幕上的数据。我也尝试过删除(0),但也会删除屏幕上的数据。不确定我在这里做错了什么