C++ Qt-滚动图表的可见区域

C++ Qt-滚动图表的可见区域,c++,qt,charts,scroll,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

我是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);
我只是不明白下面的代码

// 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);

根据docs
滚动
按dx和dy指定的距离滚动图表的可见区域

为什么
chart->滚动(chart->plotArea().width()/chart\u X\u RANGE\u MAX,0)

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


一般来说,此绘图要按
图表\u X\u范围\u MAX

滚动,因为单位不是像素,而是X轴的相同单位。@0xbaadf00d如果您认为我的帖子更有用,您可以向上投票并同时接受这两个选项。@saeed我会向上投票您的帖子,但我只有12个声望