QT qwt实时采集曲线图的两种方法

qwt缺省的x轴为double, 要换成时间有两种方法

1、参考《QWT--自定义坐标轴刻度值》https://blog.csdn.net/Mr_robot_strange/article/details/114626601

   (1)  自定义坐标轴刻度,需要继承自QwtScaleDraw,然后重写如下虚函数 virtual QwtText label(double v) const

  (2)  m_Qwt1->setAxisScaleDraw(QwtPlot::xBottom,new TimeScaleDraw());:给xBottom设置自定义坐标轴

  (3)qint64 timeVal = QDateTime::currentDateTime().toTime_t();

       appendData(QString::number(moverNo),timeVal,dm);            插入时间戳

      ui->plot->setAxisScale(QwtPlot::xBottom, dataset->getmsstart(), dataset->getmsstop(),1.0);  按自定义坐标轴定义的规则设置坐标轴范围

       步长设为1秒。

       坐标轴显示  :mm:ss 

      picker显示的是绝对时间

2、采样时间差的方法

     class TimeScakeDrawR1: public QwtScaleDraw

{
    public:
    TimeScakeDrawR1(const QDateTime &base):
      baseTime(base){
    }

    virtual QwtText label(double v) const
    {
      QDateTime upTime = baseTime.addSecs((int )v);
//    return upTime.toString("yyyy-MM-dd\nhh:mm:ss");
      return upTime.toString("hh:mm:ss");
    }

    private:
    QDateTime baseTime;
};
qint64 timeVal = m_baseTime.msecsTo(QDateTime::currentDateTime())/1000; //秒差
 显示 时:分:秒
picker 显示的时差值

posted on 2023-01-17 13:15  xihong  阅读(633)  评论(0)    收藏  举报

导航