【发布时间】:2016-12-12 18:02:01
【问题描述】:
我想知道如何在添加新点到 QLineSeries 后重新绘制 QChart。
目标是使用它来显示以高速率(高达 400 000 pts/sec)采集的数据,并在点以数据包形式到达时更新绘图。
这是我一直在做的测试程序:
主窗口:
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);
}
还有一个 pushButton clicked 事件来为系列添加点数:
void MainWindow::on_pB_Start_clicked(){
series->append(cnt,qSin(cnt/10));
cnt++;
// Update plot here << ======== HOW?
}
OpenGLSeries 示例以某种方式做到了这一点。我不明白怎么做。但这种情况有点不同,因为它将系列中的所有点替换为新点,而不是附加它们。
【问题讨论】:
-
当
on_pB_Start_clicked被调用时会发生什么?它是只为系列添加一个点还是开始以高速率添加点? -
在这个例子中,它所做的只是添加另一个点。这是我为了解
QChart的功能而构建的测试程序。但目标是以高速率进行绘图。