Qt Qwt与QCustomPlot

发布时间 2023-03-23 13:40:19作者: 一杯清酒邀明月

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

 1 ====> zip解压后, 
 2 1) 打开 qwt.prf, 取消下面的注释后, 选择 Release 模式编译 
 3         QMAKE_RPATHDIR *= $${QWT_INSTALL_LIBS}
 4 2) 打开 qwtconfig.pri  取消下面注释
 5         QWT_CONFIG     += QwtExamples
 6         QWT_CONFIG     += QwtPlayground
 7 
 8 // Qwt的基类有以下几个
 9 QwtAbstractScale: 包含刻度尺的所有类的抽象基类
10 QwtAbstractScaleDraw:绘制刻度尺的抽象基类
11 
12 QwtArrayData:包含2个QwtArray<double>实例的数据类
13 QwtColorMap:提供数值到颜色的映射功能
14 QwtClipper:剪贴板类
15 
16 QwtAbstractSlider:滑块部件的抽象基类
17 QwtAnalogClock:时钟的模拟类
18 QwtArrowButton:箭头按钮
19 
20 QwtCompass:指南针部件
21 QwtCompassMagnetNeedle:指南针部件的磁针
22 QwtCompassRose:罗盘部件的抽象基类
23 QwtCompassWindArrow:风向标的指示器

 

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

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