使用QCustomPlot时,遇到数据不连续需要断开显示的情况,发现可以通过添加qQNaN()来实现,发个文章mark一下。
先贴效果
代码如下:
double key;
QDateTime dt(QDateTime::currentDateTime());
int size = 24*60/5;
double start = 20;
double stop = 30;
double space = 10.0/size;
for(int i = 0;i<size;i++){
key = dt.toTime_t();
plot->graph(0)->addData(key,start + space*i);// 插入第一段数据
dt = dt.addSecs(5*60);
}
for(int i = 0;i<size;i++){
key = dt.toTime_t();
plot->graph(0)->addData(key,qQNaN());// 插入空白数据
dt = dt.addSecs(5*60);
}
for(int i = 0;i<size;i++){
key = dt.toTime_t();
plot->graph(0)->addData(key,stop - space*i);// 插入第二段数据
dt = dt.addSecs(5*60);
}
补充:
上面写的方法插入和多次空数据,实际上只需要在上段数据尾端插入一次就有效果啦
double key;
QDateTime dt(QDateTime::currentDateTime());
int size = 24*60/5;
double start = 20;
double stop = 30;
double space = 10.0/size;
for(int i = 0;i<size;i++){
key = dt.toTime_t();
plot->graph(0)->addData(key,start + space*i);// 插入第一段数据
dt = dt.addSecs(5*60);
}
//for(int i = 0;i<size;i++){
key = dt.toTime_t();
plot->graph(0)->addData(key,qQNaN());//只需在插入一次空数据即可
// dt = dt.addSecs(size*5*60);
//}
dt = dt.addSecs(5*60);// 空白的时间
for(int i = 0;i<size;i++){
key = dt.toTime_t();
plot->graph(0)->addData(key,stop - space*i);// 插入第二段数据
dt = dt.addSecs(5*60);
}