C++ Qt-滚动图表的可见区域
我是Qt的初学者,目前正在学习掌握Qt5的书,我被卡住了。有一段代码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
// 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个声望