Если я правильно понял, у вас есть график, на котором 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);
}
}
person
A. Sarid
schedule
08.06.2016