2017-11-24 1 views
0

MS의 X 축 스크롤 QML time + - 2500 millisenconds) X 축에 실시간으로 업데이트 된 5 초 창을 동적으로 표시하려면 어떻게합니까?QT 차트 내가 (QT 차트 QML에서 라이브 데이터</p> <p>i는 x 축 동적 오초 창을 표시해야합니다 타이머로 모든 25 밀리 초 을 Y 값을 업데이트 전류를 표시하려고

지금까지 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"); 
    } 
} 

} 
+0

x 축을 동적으로 스크롤 할 수있게 하시겠습니까? –

+0

예 정확 하 게 –

답변

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 
     } 
    } 
} 
+0

고맙습니다. –

+0

@ MarkusIppy 환영합니다. –

0

이것은 내 코드가 지금 보이는 방식이며, 나는 더 이상 사용자가 볼 수없는 데이터 포인트를 삭제합니다.

// 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); 


     } 
    } 
} 
+0

불행히도 if (타임 라인> 100) {series1.remove (1); series2.remove (1); 어떤 이유로 화면의 데이터도 삭제합니다. 나는 또한 제거 (0) 시도했지만 또한 화면 데이터를 삭제합니다. 내가 여기서 뭘 잘못하고 있는지 확실하지 않다. –