Qt第二十五天

qwt绘制动态折线图
mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QMainWindow>
#include "qwt_plot_curve.h"
#include <QTimer>
#include <QTime>
#include <QPainter>
#include <qwt_legend.h>
#include "qwt_plot_item.h"


namespace Ui {
class MainWindow;
}


class MainWindow : public QMainWindow
{
    Q_OBJECT
private:
    QwtPlotCurve *curve=new QwtPlotCurve("x-y");
    QwtPlotCurve *curve1=new QwtPlotCurve("a-b");
    double val[10]={3,5,8,6,2,8,6,9,1,5};
    double time[10]={0,1,2,3,4,5,6,7,8,9};
    double time1[20]={0};
    double val1[20]={0};
    QwtLegend *legend=new QwtLegend;


    void timerEvent(QTimerEvent *event);
private slots:
    void  legendChecked( const QVariant &itemInfo, bool on );


public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();


private:
    Ui::MainWindow *ui;
};


#endif // MAINWINDOW_H


mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    curve->setSamples(time,val,9);
    curve->attach(ui->qwtPlot);
    curve->setPen(QColor(Qt::red),1);
    this->startTimer(1000);
    legend->setDefaultItemMode(QwtLegendData::Checkable);
    ui->qwtPlot->insertLegend(legend);
    connect( legend, SIGNAL( checked( const QVariant &, bool, int ) ),
            SLOT( legendChecked( const QVariant &, bool ) ) );
    for(int i=1;i<20;i++)
    {
        time1[i]=time1[i-1]+0.5;
    }
    for(int i=0;i<20;i++)
    {
        val1[i]=qrand()%10;
    }
    //curve1 ->setSamples(time1,val1,10);
    //curve1->attach(ui->qwtPlot);


}


MainWindow::~MainWindow()
{
    delete ui;
}
/*void MainWindow::timerEvent(QTimerEvent *event)
{
    for(int i=0;i<19;i++)
    {
        val1[i]=val1[i+1];
        time1[i]=time1[i+1];
    }
    time1[19]+=0.5;
    qsrand(QTime::currentTime().msec());
    val1[19]=qrand()%10;
    curve1->setSamples(time1,val1,9);
    curve1->attach(ui->qwtPlot);
    ui->qwtPlot->replot();
}*/
void MainWindow::timerEvent(QTimerEvent *event)
{
    for(int i=0;i<9;i++)
    {
        val[i]=val[i+1];
        time[i]=time[i+1];
    }
    time[9]+=1;
    qsrand(QTime::currentTime().second());
    val[9]=qrand()%10-5;
    curve->setSamples(time,val,9);
    curve->attach(ui->qwtPlot);
    ui->qwtPlot->replot();
}
void MainWindow::legendChecked(const QVariant &itemInfo, bool on)
{
    QwtPlotItem *item=ui->qwtPlot->infoToItem(itemInfo);
    if(item)
    {
        item->setVisible(on);
    }
    ui->qwtPlot->replot();
}


运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值