用qcustomplot做曲线时,x轴需要时间来展示。传过来的数据是const char* 类型的。然后qcustomplot的setRange函数又是double类型的。这时候就要把传递过来的数据转换成double类型的。上代码
//time_start是传递过来的char类型时间字符串
void QHisCurv::refreshPixmap(const char* time_start, const char* time_end){
// 将char类型时间字符串转换成QString类型时间字符串
//(如果原始字符串格式不是标准格式,需要进行调整)
QString timeStrFormat(time_start),timeStrFormats(time_end);
// 根据QString类型时间字符串创建QDateTime实例
QDateTime dateTime = QDateTime::fromString(timeStrFormat, "yyyy-MM-dd hh:mm:ss");
//定义double类型变量,调用toTime_t()函数,将值赋值进去
double startTime = dateTime.toTime_t();
QDateTime dateTime1 = QDateTime::fromString(timeStrFormats, "yyyy-MM-dd hh:mm:ss");
double endTime = dateTime1 .toTime_t();
......
//下面是将处理好的double类型展示在X轴上
QSharedPointer<QCPAxisTickerDateTime> timer(new QCPAxisTickerDateTime());
timer->setTickCount(5);
timer->setDateTimeFormat("yyyy-MM-dd\nhh:mm:ss");
timer->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
//这里需要全局定义一个曲线类,不了解可以去看我另外一个帖子
//https://blog.csdn.net/faterbeiwodansha/article/details/130574270?spm=1001.2014.3001.5502
customplot->xAxis->setTicker(timer);
customplot->xAxis->setRange(endTime ,startTime );
}
然后展示一下运行结果吧