QT 中 QWT 及 QCustomPlot

一、QWT 简介

QWT,即Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目, 可生成各种统计图,是为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。QWT工具库是基于Qt开发的,继承了Qt的跨平台特性

# 下载安装
win源码: https://nchc.dl.sourceforge.net/project/qwt/qwt/6.1.5/qwt-6.1.5.zip
帮助文件:https://liquidtelecom.dl.sourceforge.net/project/qwt/qwt/6.1.5/qwt-6.1.5.qch
====> zip解压后, 
1) 打开 qwt.prf, 取消下面的注释后, 选择 Release 模式编译 
		QMAKE_RPATHDIR *= $${QWT_INSTALL_LIBS}
2) 打开 qwtconfig.pri  取消下面注释
		QWT_CONFIG     += QwtExamples
		QWT_CONFIG     += QwtPlayground
		
====> 帮助文件剪切到QT系统目录下 C:\Qt\Qt5.14.2\Docs\Qt-5.14.2\qwt-6.1.5.qch

// Qwt的基类有以下几个
QwtAbstractScale: 包含刻度尺的所有类的抽象基类
QwtAbstractScaleDraw:绘制刻度尺的抽象基类

QwtArrayData:包含2个QwtArray<double>实例的数据类
QwtColorMap:提供数值到颜色的映射功能
QwtClipper:剪贴板类

QwtAbstractSlider:滑块部件的抽象基类
QwtAnalogClock:时钟的模拟类
QwtArrowButton:箭头按钮

QwtCompass:指南针部件
QwtCompassMagnetNeedle:指南针部件的磁针
QwtCompassRose:罗盘部件的抽象基类
QwtCompassWindArrow:风向标的指示器

二、QCustomPlot

QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用,远比qwt方便和漂亮,可以自己使用两个源文件也可以自己编译成库文件,非常方便。

官方网站:http://www.qcustomplot.com
https://www.qcustomplot.com/index.php/download

使用QCustomPlot非常简单, 只需:
1) QT += widgets printsupport
2) 把qcustomplot.cpp和qcustomplot.h拷贝到工程目录下,然后把这两个文件引入工程项目即可
3) 右键Widget窗体,选择提升为QCustomPlot即可
4) 绘图时
	customPlot->graph(0) //添加一个曲线图层 setName和name函数分别设置和获取曲线的名字
	
	void setData (QCPDataMap*data, bool copy=false)
	void setData (const QVector<double > &key, const QVector<double > &value)
	// 追加数据
	void addData (const QCPDataMap&dataMap)
	void addData (const QCPData&data)
	void addData (double key,double value)
	void addData (const QVector<double > &keys, const QVector<double > &values)
	// 设置完数据后可以对x,y轴进行设置
	customPlot->xAxis->setLabel("x");
	customPlot->yAxis->setLabel("y");
	// 或者设置x,y轴的范围
	customPlot->xAxis->setRange(-1,1);
	customPlot->yAxis->setRange(0,1);
	QCustomPlot::rescaleAxes()函数,它会自动设置最合适的显示范围
   
   // QCustomPlot::replot 函数使图像进行重绘,show函数也会触发重绘事件
   setInteractions(QCP::iRangeDrag | QCP::iRangeZoom); //移动和缩放

你可能感兴趣的:(QT,qt5,plot,c++)