我是Qt的新手,並嘗試使用帶有Qt 5.7的QSplineSeries實現實時繪圖。我需要滾動x軸,因爲每100毫秒都會有新的數據出現。如果我不使用graphSeriesX-> remove(0)清除附加到該系列的舊數據,則CPU使用率達到100%。我找到了兩種滾動x軸的方法。使用Qt5圖表實現實時繪圖
const uint8_t X_RANGE_COUNT = 50;
const uint8_t X_RANGE_MAX = X_RANGE_COUNT - 1;
qreal y = (axisX->max() - axisX->min())/axisX->tickCount();
m_x += y;
if (m_x > axisX->max()) {
axisX->setMax(m_x);
axisX->setMin(m_x - 100);
}
if (graphSeries1->count() > X_RANGE_COUNT) {
graphSeries1->remove(0);
graphSeries2->remove(0);
graphSeries3->remove(0);
}
上述的問題是,m_x的類型是QREAL,並在一段時間內,如果我保持連續運行演示,將達到它的最大價值和axisX-> SETMAX調用將失敗使得情節不工作了。什麼是解決這個用例的正確方法?
qreal x = plotArea().width()/X_RANGE_MAX;
chart->scroll(x, 0)
if (graphSeries1->count() > X_RANGE_COUNT) {
graphSeries1->remove(0);
graphSeries2->remove(0);
graphSeries3->remove(0);
}
但是我不清楚在這種情況下如何使用graphSeriesX-> remove(0)調用。該圖將繼續被消除,因爲一旦該系列附加了X_RANGE_COUNT值,if塊將始終爲真,從而刪除第0個值,但滾動以某種方式無法按照手動方式爲x軸工作設置最大值,並且在一段時間後,我沒有圖形。如果我不調用remove,但是我的CPU使用率達到100%,則滾動工作。
有人可以指點我正確的方向如何使用滾動,而使用刪除,以保持CPU使用率低?