我想知道如何在将新点添加到其中的QLineSeries
后重新绘制QChart
。
目标是用于显示高速获取的数据(最高达400,000个点/秒),并在数据以数据包形式到达时更新图表。
这是我一直在开发的测试程序:
MainWindow:
class MainWindow : public QMainWindow{
Q_OBJECT
QLineSeries *series;
QChart *chart;
QChartView *chartView;
int cnt=0;
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pB_Start_clicked();
private:
Ui::MainWindow *ui;
};
MainWindow构造函数:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){
ui->setupUi(this);
series = new QLineSeries();
chart = new QChart();
chart->setBackgroundRoundness(0);
chart->addSeries(series);
// A bunch of formatting
chart->setBackgroundVisible(false);
chart->setMargins(QMargins(0,0,0,0));
chart->layout()->setContentsMargins(0,0,0,0);
chart->legend()->hide();
chart->setPlotAreaBackgroundBrush(QBrush(Qt::black));
chart->setPlotAreaBackgroundVisible(true);
chartView = new QChartView(chart);
ui->gridLayout->addWidget(chartView);
}
并且有一个 clicked
事件来将点添加到系列中的 pushButton:
void MainWindow::on_pB_Start_clicked(){
series->append(cnt,qSin(cnt/10));
cnt++;
// Update plot here << ======== HOW?
}
OpenGLSeries示例以某种方式实现了这一点。我不明白具体是如何实现的。但在这种情况下,它有些不同,因为它用新的点替换了系列中的所有点,而不是将它们附加到末尾。
on_pB_Start_clicked
时,实际上会发生什么?它是仅向系列添加一个点还是开始以高速率添加点? - SergeyQChart
的功能。但目标是以高速率绘制。 - A. Vieira