如果我做对了,你有一个图表,它的xAxis
范围是恒定的。假设它被定义为MAX_RANGE
秒,并且您希望一旦它经过MAX_RANGE
秒,它将清除图表并从0
秒重新开始。
如果这一切都是正确的,那么我猜你已经有一个函数,你每秒调用一次T
以更新绘图。如果没有,那么看看这个例子。
让我们假设您已经拥有一个每秒调用一次的函数T
:
void MyPlot::updatePlot(int yValue)
然后只需添加一个timeCounter
将在每次调用时更新的类变量。然后添加一个if
语句来检查它是否通过MAX_RANGE
。如果确实如此,则使用 清除图形clearData()
,添加新值并重置timeCounter
。如果没有,那么只需添加新值。简单示例(只需进行更改以适合您的情况):
void MyPlot::updatePlot(int yValue){
this->timeCounter += T;
if (this->timeCounter >= MAX_RANGE) {
ui->customPlot->graph(0)->clearData();
ui->customPlot->graph(0)->addData(0, yValue);
this->timeCounter = 0;
}
else {
ui->customPlot->graph(0)->addData(this->timeCounter, yValue);
}
}