Qt - 滚动图表的可见区域

时间:2017-09-21 12:02:14

标签: c++ qt charts scroll

我是Qt的初学者,目前正在学习掌握Qt5的书,我被卡住了。有一段代码

// Global variables
const int CHART_X_RANGE_COUNT = 50;
const int CHART_X_RANGE_MAX = CHART_X_RANGE_COUNT - 1;

void MemoryWidget::updateSeries()
{
  double memoryUsed = SysInfo::instance().memoryUsed(); // retrieve the latest memory percentage used
  mSeries->append(mPointPositionX++, memoryUsed);
  if (mSeries->count() > CHART_X_RANGE_COUNT)
  {
    QChart *chart = chartView().chart();
    chart->scroll(chart->plotArea().width() / CHART_X_RANGE_MAX, 0);
    mSeries->remove(0);
  }
}

我只是不理解下面这段代码

chart->scroll(chart->plotArea().width() / CHART_X_RANGE_MAX, 0);

如果我想滚动到X轴上的最新点而Y上没有任何内容,那么为什么我必须这样做:

chart->plotArea().width() / CHART_X_RANGE_MAX

并且无法做到这一点:

chart->scroll(1, 0);

1 个答案:

答案 0 :(得分:0)

根据文档scroll按照dx和dy指定的距离滚动图表的可见区域。

以及为什么chart->scroll(chart->plotArea().width() / CHART_X_RANGE_MAX, 0);

因为mSeries->append(mPointPositionX++, memoryUsed);会定期调用,一段时间后会填充xaxis的完整窗口,并且在每个完整窗口填充后,如果每次调用chart->scroll(1, 0);时都使用updateSeries(),则会滚动绘图您将窗口滚动到下一个并始终显示最后一个点,

一般来说,这个情节想要按CHART_X_RANGE_MAX滚动。