Qtが新しく、Qt 5.7でQSplineSeriesを使用してリアルタイムプロットを実装しようとしています。 100msごとに新しいデータが来るのでx軸をスクロールする必要があります。 graphSeriesX-> remove(0)を使用して、シリーズに追加された古いデータをパージしないと、CPU使用率が100%に達するようです。私はx軸をスクロールする2つの方法を見つけました。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であり、私は継続的に実行されているデモを続ける場合は、いくつかの時点で、それはそれはMAX値だ達すると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->は、このシナリオでは(0)の呼び出しを削除することができます。グラフはX_RANGE_COUNTの値が追加されるとグラフが消去され続けますが、ifブロックは常に0番目の値を削除しますが、スクロールは何とかx軸の最大値を手動で設定したり、グラフ。スクロールは削除を呼び出さないが、CPU使用率が100%に達した場合に機能します。
CPU使用率を低く抑えるためにremoveを使用しているときに、スクロールの使い方を正しい方向で指摘できますか?