我是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);
答案 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
滚动。