在图表中更新 QLineSeries 根本不起作用

Updating QLineSeries in Chart doesnt work at all

我现在脑子都快烧焦了,想不通为什么我的图表根本没有更新。 我在我的应用程序 *.h-File:

中声明了以下内容
QT_CHARTS_NAMESPACE::QChart* chart;
QT_CHARTS_NAMESPACE::QLineSeries* series;
QT_CHARTS_NAMESPACE::QChartView* chartView;

在我的主窗口 *.cpp 文件的构造函数中,我编写了

this->series= new QT_CHARTS_NAMESPACE::QLineSeries();
this->chart = new QT_CHARTS_NAMESPACE::QChart();
this->chartView = new QT_CHARTS_NAMESPACE::QChartView(chart);
this->chartView->setRenderHint(QPainter::Antialiasing);
.
. 
.
this->series->clear();
this->chart->legend()->hide();

this->setPlotAreaBackgroundVisible(true);

this->series->setVisible(true);
this->chart->addSeries(this->series);
this->chart->createDefaultAxes();

现在 series 是空的,我从 Qt 文档中知道每次 append() 发出信号时我的图表都应该更新。

在所有这些实例化之后,我的应用程序完成了它的工作。在来自另一个线程的槽中,一些数据应该附加到系列中:

 /*Some other things*/
 
 this->seriesXIncrement++;
 QPoint point = QPoint(this->seriesXIncrement,this->parsedReadCommand.toUInt());
 this->series->append(point);
 qDebug()<<this->series->points().size();

 this->chart->createDefaultAxes();
 this->chartView->repaint();

我已经使用 qDebug 验证了追加方法。它的大小按预期增长,我创建的点也是有效的,但在我的图表上没有任何反应。我不确定 createDefaultAxes() 是否也是更新轴的方法,但我认为这是一种相对简单和懒惰的方法。

我发现 createDefaultAxes() 导致了这个问题。我像这样插入了 createDefaultAxes() 的 (x,y) 轴:

 QT_CHARTS_NAMESPACE::QValueAxis *axisX = new QT_CHARTS_NAMESPACE::QValueAxis;
  axisX->setRange(0, this->series->points().length());
  axisX->setTickCount(10);
  axisX->setLabelFormat("%d");
  chartView->chart()->setAxisX(axisX, series);

  QT_CHARTS_NAMESPACE::QValueAxis *axisY = new QT_CHARTS_NAMESPACE::QValueAxis;
  axisY->setRange(0, 50);
  axisY->setTickCount(1);
  axisY->setLabelFormat("%d");
  chartView->chart()->setAxisY(axisY, series);

这解决了问题。