QT图表QML滚动X轴(毫秒)
我试图在QT图表QML中显示实时数据 我用计时器每25毫秒更新一次Y值 x轴应显示动态5秒窗口(当前时间+-2500毫秒)。如何使x轴动态显示实时更新的5秒窗口 到目前为止,我的计时器是正确的,每25毫秒触发一次 我修改了其中一个QT示例,到目前为止,实时更新工作正常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
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),但也会删除屏幕上的数据。不确定我在这里做错了什么