您的位置:首页 > 其它

VS2015+QWT实时绘制动态曲线简单例子

2016-11-19 20:36 681 查看
1.首先下载并配置好QWT相关库文件,百度上有好多例子,这里不展开讲。

2.新建一个QT项目time_line.sln(Qt Application)

3.

(1)属性->配置属性->C/C++->常规,附加包含目录:$(QTDIR)\include\QWT;

(2)属性->配置属性->链接器->输入,附加依赖项:qwtd.lib;

(3)属性->配置属性->C/C++->预处理器,预处理器定义:QWT_DLL

4.点击time_line.ui



5.加入一个QWT控件,如下图



6.返回VS2015,在time_line.h的time_line类中声明槽函数如下:

#ifndef TIME_LINE_H
#define TIME_LINE_H

#include <QtWidgets/QMainWindow>
#include "ui_time_line.h"
#include <qwt_plot_curve.h>
#include<qwt_plot_canvas.h>
class time_line : public QMainWindow
{
Q_OBJECT

public:
time_line(QWidget *parent = 0);
~time_line();
QwtPlotCurve *curve;
//X轴
double time[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//Y轴
double val[10] = { 3, 5, 8, 7, 2, 0, 7, 9, 1 };
void timerEvent(QTimerEvent *);
QwtPlotCanvas *canvas;
private:
Ui::time_lineClass ui;
};

#endif // TIME_LINE_H


7.在time_line.cpp中定义如下:

#include "time_line.h"

time_line::time_line(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
setWindowTitle("OK");
//实例化
curve = new QwtPlotCurve("Acc_X");
//加载数据
curve->setSamples(time, val, 10);
//设置x轴y轴
ui.qwtPlot->setAxisTitle(QwtPlot::xBottom, "time");
ui.qwtPlot->setAxisTitle(QwtPlot::yLeft, "sum");
ui.qwtPlot->setAxisScale(QwtPlot::yLeft, 0, 10, 2);
ui.qwtPlot->setAxisScale(QwtPlot::xBottom, 0, 10, 2);
//加到plot,plot由IDE创建
curve->attach(ui.qwtPlot);
this->startTimer(100);
}

time_line::~time_line()
{

}

void time_line::timerEvent(QTimerEvent *) {
for (int i = 0; i < 9; i++) {
val[i] = val[i + 1];
}
//最后一位为新数据(这里为随机数模拟)
val[9] = qrand() % 10;
//重新加载数据
curve->setSamples(time, val, 10);
//QwtPlot重绘,重要,没有这句不起作用
ui.qwtPlot->replot();
}


8.运行如下图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: