mythas 发表于 2018-9-12 13:27:13

【CustomPlot】关于x轴时间显示的问题

最近要做一个实时显示数据的曲线,x轴取的是现在的时间。
double key=QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0;
key即为点在x轴上的值,但有一个问题是,这个时间取的是自epoch time以来的时间间隔,但我想显示的是当天时间的时分秒,所以现在h这里就不对。比如现在是20:53:00 但会显示426852:53:00

另外为什么不直接用现在时间的时分秒呢,因为我发现如果我用double key=time.hour()*3600+time.minute()*60+time.second()+time.msec()/1000;会导致画图replot的频率很慢很慢,大概固定在1s左右。这个原因也一直没想明白,也许和Qcustomplot的添加数据的机制有关吗?

另外有资料补充:
这里的博主用的也是double key=QDateTime::currentDateTime().toMSecsSinceEpoch()/1000.0; 但最终显示的却是正确的今日的时分秒,因为版本不同,博主的代码里有部分已经不可用了,但我没有找到版本升级后可代替的了。刚注册发不了URL ,百度可搜索QCustomPlot实现实时动态曲线就可以找到这个博客了。

希望有好心的大佬解答一下。刚接触Qt和customplot,比较小白。

shasidaran 发表于 2018-9-12 15:00:05

你既然想显示当天的时间,为什么要用
qint64 QDateTime::toMSecsSinceEpoch() const

然后看你目前只是需要时间,并没有需要日期,那用下面这个不行吗
staticQTime QTime::currentTime()

mythas 发表于 2018-9-12 17:45:54

shasidaran 发表于 2018-9-12 15:00
你既然想显示当天的时间,为什么要用




你是说这样用吗QTime time=QTime::currentTime() ;
key=time.hour()*3600+time.minute()*60+time.second()+time.msec()/1000;
这样的话刷新会很慢 大概1s左右一次

mythas 发表于 2018-9-12 19:56:40

直接的问题已经解决啦 有人告诉我用以下这个


用dateTicker设置时间显示的格式
QSharedPointer<QCPAxisTickerDateTime> dateTicker(new QCPAxisTickerDateTime);
dateTicker->setDateTimeFormat("hh:mm:ss");
ui->customPlot->xAxis->setTicker(dateTicker);


我之前用的是QCPAxisTickerTime这里用QCPAxisTickerDateTime就行了 我猜测小时这里可能有个mod24的功能吧

shasidaran 发表于 2018-9-13 09:11:13

恩 解决了就好
:D:D:D:D:D

mythas 发表于 2018-9-13 12:47:47

shasidaran 发表于 2018-9-13 09:11
恩 解决了就好

其实还是蛮奇怪的 为啥直接用currenTime算出来的ms值作为x轴上的值 刷新就那么慢

helloVe 发表于 2021-6-23 14:34:17

楼主,问下你动态曲线显示的时候,x轴负半轴会显示吗,我设置范围后,动态显示的时候还是会显示x轴负半轴的坐标
页: [1]
查看完整版本: 【CustomPlot】关于x轴时间显示的问题