VS2015+QWT實時繪製動態曲線簡單例子

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.運行如下圖




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章