如果我做对了,你有一个图表,它的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);
}
}