qwt横轴为时间轴,纵轴为随机数

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qwt_date_scale_draw.h"
#include "qwt_plot.h"
#include <qdatetime.h>
#include <QDateTime>
#include <qwt_plot_magnifier.h>
#include <QTimer>
#include <qwt_symbol.h>
#include <QPoint>
#include <qwt_plot_grid.h>
#include <qwt_plot_curve.h>
 
 
QDateTime m_baseTime;
QVector<double> m_xTime;
QVector<double> m_yVal;
QwtPlotCurve *plotcurve;
int m_timeAreaWidth;
QVector<QPointF> m_vp;
double m_timeData[3600];
 
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;
};
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    m_timeAreaWidth = 60;
    m_baseTime = QDateTime::currentDateTime();
 
    QwtPlotGrid *grid = new QwtPlotGrid;//网格
    grid->enableX(true);
    grid->enableY(true);
    grid->setMajorPen(Qt::red,0,Qt::DotLine);
    grid->attach(ui->qwtPlot);
 
    plotcurve = new QwtPlotCurve();
    plotcurve->setTitle("氨气");//曲线名字
    plotcurve->setPen( Qt::darkCyan, 2 );//曲线的颜色 宽度;
 
    ui->qwtPlot->setAxisScaleDraw(QwtPlot::xBottom, new TimeScakeDrawR1(m_baseTime));
    ui->qwtPlot->setAxisScale(QwtPlot::yLeft, 0,200,20);
 
    (void) new QwtPlotMagnifier(ui->qwtPlot->canvas());//可以放大放
 
    plotcurve->setSymbol(new QwtSymbol(QwtSymbol::Cross, Qt::NoBrush,
        QPen(Qt::blue), QSize(5, 5) ) );
 
    QTimer *timer = new QTimer(this);
    timer->start(1000);
    connect(timer,SIGNAL(timeout()),this,SLOT(replotCurves()));
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::replotCurves()
{
    QPointF pt;
    qint64 timeVal = (QDateTime::currentDateTime().toMSecsSinceEpoch()-m_baseTime.toMSecsSinceEpoch())/1000;
 
    if(m_vp.size() >= m_timeAreaWidth)
    {
        m_vp.pop_front();
    }
 
    pt.setX(timeVal);
    pt.setY(rand()%200);
    m_vp.append(pt);
 
    qint64 k = timeVal;
    for ( int j = 0; j < m_timeAreaWidth; j++ )
    {
        m_timeData[j] = k--;
    }
 
    ui->qwtPlot->setAxisScale(QwtPlot::xBottom, m_timeData[m_timeAreaWidth - 1 ], m_timeData[0]);
    plotcurve->setSamples(m_vp);
    plotcurve->attach(ui->qwtPlot);
    ui->qwtPlot->replot();
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值