前言
QWT, Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据,数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等。该工具库基于Qt开发,所以也继承了Qt的跨平台特性。
本文所用的资源文件都在这里:有积分的可以下载下,没有积分需要的话,也可以私信我,我传给你
https://download.csdn.net/download/qq_21449473/20063069?spm=1001.2014.3001.5503
提示:以下是一些QWT可以实现的图形
一、下载安装
1. 下载
QWT官方网址: http://qwt.sourceforge.net/
稳定版下载地址: http://sourceforge.net/projects/qwt/files/qwt/
下载的版本是qwt-6.X.X,将其源码解压,解压的文件为: qwt-6.X.X.zip,这个文件是window版本的源码,qwt-6.X.X.tar.bz2是linux等其他系统的版本。
这里下载有点慢需要耐心等待。
选择.zip文件下载,解压
- designer文件夹: qwt插件的源码,用于生成Qt Designer插件,插件可以在Qt Designer中直接拖拽使用
- doc文件夹:帮助文档
- examples文件夹: qwt的示例(源码、可执行程序), 这些工程的生成需要src或designer目录下工程生成的qwt.lib/qwt.dll
- src文件夹: qwt的源码
- textengines目录:存放数学指标语言的文本驱动引擎代码
- pro等工程文件等。
2.编译
1:在Qt Creator打开qwt.pro,点击构建项目,默认Debug和Release库都会编译。可在qwtbuild.pri中修改设置。
打开编译开关,在qwt->其他文件->qwt.prf中,下图的注释去掉:
然后正常编译项目,编译该项目的Release版本。
重要!!使用MSVC来编译,不然使用MinGW编译,无法编译成功。
以下是使用MSVC编译的,可以看到其中保健的库文件很全面
以下是使用MinGW编译的,可以看到少了很多库文件,这个我也不知道原因。
有人是这么说的,所以我建议还是直接用MSV编译QWT
由于官方Qt Creator是用MSVC编译的,以只能识别由MSVC编译的Qwt。如果要使用MinGW编译的Qwt,需要用MinGW重新编译Qt Creator。
使用Qt Creator打开qwt.pro,进行编译(qmake->build),编译完后会在lib文件夹下生成qwt.dll和qwt.lib(release版), 以及qwtd.dll和qwtd.lib(debug版)。
使用Qt Creator打开qwt.pro,进行编译(qmake->build),编译完后会在lib文件夹下生成qwt.dll和qwt.lib(release版), 以及qwtd.dll和qwtd.lib(debug版)。
同时会生成qt creator使用的插件qwt_designer_plugin.dll和qwt_designer_plugin.lib。
二、配置与使用
1.配置
配置
(1) 本例【QT安装目录】为D:\WorkSoft\QT\5.14.2\msvc2017_64
(2) 将qwtd.dll、qwt.dll拷贝到【QT安装目录】\bin下,将qwtd.lib、qwt.lib拷贝到【QT安装目录】\lib下。
(3) 将qwt_designer_plugin.dll和qwt_designer_plugin.lib拷贝到【QT安装目录】\plugins\designer目录下。
(4) 将解压得到的qwt-6.1.6\src文件夹拷贝到【QT安装目录】\include目录下,改名为 QtQWT。
这个时候可以看到QWT的工具已经有了
到这里,就基本配置完成了。
在Creator中新建带GUI的Qt项目,使用qwt插件和基类完成图表类设计。
Qwt的基类有以下几个:
- QwtAbstractScale: 包含刻度尺的所有类的抽象基类
- QwtAbstractScaleDraw:绘制刻度尺的抽象基类
- QwtAbstractSlider:滑块部件的抽象基类
- QwtAnalogClock:时钟的模拟类
- QwtArrayData:包含2个QwtArray实例的数据类
- QwtArrowButton:箭头按钮
- QwtClipper:剪贴板类
- QwtColorMap:提供数值到颜色的映射功能
- QwtCompass:指南针部件
- QwtCompassMagnetNeedle:指南针部件的磁针
- QwtCompassRose:罗盘部件的抽象基类
- QwtCompassWindArrow:风向标的指示器
使用
在想使用的项目中需要在pro中进行配置:
我为了项目移植到其他电脑方便大家一起开发,将上面的QWT文件以及qwtd.dll、qwt.dll都放在了自己的项目中
如下:
之后在自己的项目中添加现有文件,将QWT中所有文件导入
再之后添加库
选择外部库
最后在pro文件生成如下代码
SUBDIRS += \
resource/QWT_Resource/QWT/src.pro
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/resource/QWT_Resource/ -lqwt
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/resource/QWT_Resource/ -lqwtd
INCLUDEPATH += $$PWD/resource/QWT_Resource
DEPENDPATH += $$PWD/resource/QWT_Resource
2.编译遇到问题
遇到以下错误:
error: C1083: 无法打开包括文件: “qgl.h”: No such file or directory
这个意思就是缺少opengl模块
在pro文件头中添加以下代码即可
QT += opengl
遇到以下错误:
error: C1083: 无法打开包括文件: “qprinter.h”: No such file or directory
这里是缺少printsupport,添加即可
QT += printsupport
svg concurrent opengl
error: 'qtconcurrentrun.h' file not found
这个就是QT4到QT5迁移时候遇到的问题
如果你想使用并行模块在其他5 Qt的东西,你应该#include 。您还应该添加Qt += concurrent到您的项目文件,然后重新运行qmake的。
还有找不到qgl.h
添加如下到模块到pro文件中
QT += svg concurrent opengl
最后编译运行可以看到模块可以使用了。
整体加入以下几个模块即可:
QT += opengl printsupport svg concurrent
参考文章:
QWT编译、配置、使用(VS2010 + Qt5.1.0)
QWT编译、配置、使用(Qt Creator)
在Qt中使用Qwt
QWT编译、配置、使用(Qt Creator)
Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo