基于Qwt的实时波形绘制的实现

时间:2022-10-01 11:00:25

在工业控制领域,往往需要在软件运行过程中能及时观察到运行数据,Qwt刚好满足这种需求,并且Qwt基于Qt,所以具有良好的移植性和跨平台特性。Qwt提供丰富的图形绘制库,基本满足各种绘图需求。本文首先介绍基于windows平台Qwt的环境配置,其次基于Qwt实现了某工控检测系统实施绘制图形的功能。

【关键词】跨平台 插件 实时图形绘制

Qwt是一款基于Qt的快速图形绘制插件,遵守LGPL版权协议,对外开放源代码。提供了一组实用的类库,可以生成各种统计图,这些图都以2D的形式在窗体中显示。数据源可以是数组,浮点数等,输出数据主要表现形式为各种曲线图,饼图,柱状图,仪表盘等。由于其良好的跨平台特性以及强大的绘图功能,目前已广泛应用于许多领域。虽然Qwt功能强大,但是其开发环境的搭建并不容易。

1 搭建QtCreator开发环境

在使用qwt之前需要首先配置好QtCreator。如果Qt creator是用minGW编译生成的,那么Qwt也必须使用minGW编译;如果Qt creator是用MSVC编译生成,那么Qwt也必须使用MSVC编译生成。如果QtCreator和Qwt对应的编译器不一致,那么虽然可以编译成功,但是Qwt无法集成到Qt Creator内置的Qt Dsigner设计器中。

(1)从qtCreator官方网站下载qt-creator-2.8.0源码包。解压缩到D盘creator- 2.8.0目录,从windows“菜单”选项中找到“Qt 4.8.5 Command Prompt”选项,输入命令”cd QtCreator-2.8.0”切换到qtCreator目录中。

(2)输入命令“qmake -spec win32-g++ -r "CONFIG+=release"”,对qtcreatro源码进行qmake编译,编译成功后输入“mingw32-make release”对QtCreator进行minGW编译,这一步有可能会出现错误“hostosinfo.cpp:42: error: 'GetNativeSystemInfo' was not declared in this scope”,错误原因是QtCreator源文件hostinfo.cpp 第43行代码“GetNativeSystemInfo(&info);”造成的。这行代码是获得当前操作系统信息,由于在windows下默认是windows平台,所以直接注释掉该行代码即可。注释后,重新进行编译,编译成功。

(3)编译成功后执行命令“mingw32-make install INSTALL_ROOT="d:\QtCreator-2.8.0”对编译过后的QtCreator文件进行安装,安装完之后就可以删除源代码文件。

(4)进入“d:\QtCreator-2.8.0\bin”目录,双击qtcreator.exe即可运行QtCreator。

2 搭建Qwt开发环境

(1)从Qwt网站下载源码包:目前Qwt最新开发包版本是qwt-6.1.1.zip,下载完成后直接解压缩,解压缩成功后会看到6个文件夹,分别是designer文件夹,doc文件夹,examples文件夹,playground文件夹,src文件夹,textengines文件夹。其中src文件夹最重要,存放的是qwt的源码,designer文件夹中存放的也是源代码,这些源代码是用于生成Qt designer插件的;doc文件夹中存放的是相关文档,example文件夹存放的是示例程序,qwt环境配置好后,可以进行编译,运行。其余文件夹功能不重要,不一一介绍。

(2)编译Qwt源码。

(3)在QtCreator中打开src文件夹中的qwt.pro文件。选择“构建”菜单中的“执行qmake”子菜单,执行qmake命令,执行成功后,选中“构建所有项目”子菜单,对qwt工程进行构建,笔者在构建过程中出现错误:“在refreshtest目录中plot.cpp文件中找不到: qwt_painter.h,qwt_plot_canvas.h等文件”,经过分析,发现refreshtest目录是example目录中qwt自带的一个例子工程,而其他qwt实例工程文件编译过程中没有发现类似错误,怀疑该实例工程中的pro文件有问题,经过和其他编译成功的实例工程的pro文件进行对比,发现refreshtest实例工程中pro文件缺少一行代码,“include( $${PWD}/../examples.pri )”,添加该行代码后,构建成功。

(4)配置qwt。Qwt编译成功后会在lib等目录生成相关的库文件,需要把库文件拷贝到QtCreator相关目录。分别进行如下操作:拷贝文件 qwt/lib/*.dll 到/Qt/4.8.5/bin目录,拷贝qwt/lib/*.a 到/Qt/4.8.5/lib目录,拷贝qwt/designer/plugins/designer目录所有文件到/Qt/4.8.5/plugins/designer/目录,拷贝qwt/src/到 /Qt/4.8.5/include/qwt 目录,该步骤中的qwt目录需要自己建立。以上操作全部成功后,打开QtCreator内置的designer后就可以看到Qwt插件。

(5)利用Qwt插件实时绘制图形。成功安装qwt后,打开QtCreator,创建新项目的时候选择“创建界面”复选框,创建项目成功后,双击“*.ui”文件,便可打开QtCreator内置的QtDesigner设计器,此时便可在控件栏看到Qwt widget相关的控件,以QwtPlot控件为例,实现实时图形绘制。拖动QwtPlot控件到项目widget上,通过setAxisTitle()函数可以设置纵横坐标的标签值,通过setAxisScale()函数可以设置纵横坐标的刻度值,通过setCanvasBackground()函数可以设置绘制图形的背景色。通过QwtPlotGrid类可以在绘图背景上绘制表格。背景绘制完成后,就可以绘制图形。绘制图形的数据可以暂存在double类型的容器QVector中,暂存的过程通过调用append()函数实现。然后通过调用QwtPlotCurve类生成需要绘制的曲线对象,再调用该对象的setSamples()函数添加存储在QVector中的数据,便可生成实时曲线。

作者单位

南阳理工学院 河南省南阳市 47300

上一篇:基于PPT的随机点名系统 下一篇:基于电力系统中降损技术的应用研究