私はデータをライブで読み込むチャートを作ろうとしています。私は、「動的スプライン」と呼ばれるQt提供の例から始めました。QTCharts、ライブデータが入ってくるとグラフをx軸に沿ってどのようにしますか?
私が抱えている問題は、scroll()関数がピクセルをスクロールするように見えて、Qtにスクロールしてデータとともに表示される関数がないようです。だから私はpixesスクロールカウントを正確に取得しない限り、私のプロットラインは、もはや目に見えなくなるまで成長するか、プロットラインを残してチャートをスクロールします。
これは私にとっては、誰もがダイナミックなグラフで使用するかなり明白な機能のようなものなので、Qtチャートのどの機能がこれをしているのですか?
Qtチャートで動的データ収集を使用する方法に関するチュートリアルを見つけることさえできませんでした。
#include "chart.h"
#include <QtCharts/QAbstractAxis>
#include <QtCharts/QSplineSeries>
#include <QtCharts/QValueAxis>
#include <QtCore/QTime>
#include <QtCore/QDebug>
Chart::Chart(QGraphicsItem *parent, Qt::WindowFlags wFlags):
QChart(QChart::ChartTypeCartesian, parent, wFlags),
m_series(0),
m_axis(new QValueAxis),
m_step(0),
m_x(10),
m_y(1)
{
qsrand((uint) QTime::currentTime().msec());
QObject::connect(&m_timer, SIGNAL(timeout()), this, SLOT(drawChart()));
m_timer.setInterval(1000);
m_series = new QSplineSeries(this);
QPen green(Qt::red);
green.setWidth(3);
m_series->setPen(green);
m_series->append(m_x, m_y);
addSeries(m_series);
createDefaultAxes();
setAxisX(m_axis, m_series);
// m_axis->setTickCount(11);
axisX()->setRange(0, 100);
axisY()->setRange(-5, 10);
m_timer.start();
elapsedTime.start();
}
Chart::~Chart()
{
}
void Chart::drawLine(qreal &x, qreal &y)
{
m_series->append(x, y);
}
qreal Chart::getTime()
{
return elapsedTime.elapsed()/100;
}
void Chart::drawChart()
{
qreal x = plotArea().width()/m_axis->tickCount();
qreal y = (m_axis->max() - m_axis->min())/m_axis->tickCount();
m_x = getTime();
m_y = qrand() % 5 - 2.5;
drawLine(m_x, m_y);
scroll(x, 0);
qDebug() << getTime();
}
コードはかなり単純ですが、今はプロットしていますが、ラインとスクロールは完全にシンクの外です。そして、私は自分のX軸として時間を使いたいので、例がセットアップされていてスケーラブルでない素晴らしい方法を使うことはできません。
今はちょうど乱数をプロットしています。私はこのスクロールされたものがソートされるまで、実際のデータを与えることを迷惑にならないでしょう。
ご協力いただきありがとうございます。 Qtチャートの良いチュートリアルを知っていれば、私は大いに感謝しています。 Qtチュートリアル、とにかく良いものは、見つけるのが非常に難しいです。
。範囲を変更せずに、最大値は苦情なしに画面からすぐに流れます。 – granitdev