qt超强绘图控件qwt - 安装及配置

qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图。它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等,目前已经应用到许多工业领域,同时qwt也致力于3d的开发。但许多时候,qwt的安装配置难到了许多人,我曾经也在这里原地踏步很久,为了给大家开发方便,把我的安装经验分享给大家,避免少走点弯路。

1.前言

qwt有多强大,可以看看官网的截图:

曲线类截图:http://qwt.sourceforge.net/curvescreenshots.html

散点图:http://qwt.sourceforge.net/scatterscreenshots.html

频谱及外形轮廓图:http://qwt.sourceforge.net/spectrogramscreenshots.html

工业控件类:http://qwt.sourceforge.net/controlscreenshots.html

其功能远不止展示的这些,还包括移动图线上的点修改图线,在画布上任意作图,另外,qwt控件最大的优点是它的灵活性,但这个灵活性也导致它偶尔会很麻烦

2.下载最新的qwt

如果你是使用qt5,那么需要最新版本的qwt控件,下载地址:http://sourceforge.net/projects/qwt/files/qwt/

windows下编程下载zip,ubuntu下载bz2的

还有个pdf说明文档,下不下都无所谓,因为安装包里面已经有文档了

下面说说安装的问题

3.安装


把下载的文件解压缩放到一个固定目录里
我在qt安装目录下面新建文件夹qtctrl,把所有第三方控件都放置在这里的
解压完的文件如下图所示

下面对它进行编译

3.1 编译控件

许多人在这里止步,在网上看到许多复杂的教程,又要写命令行又要设置啥啥啥的,其实很简单,直接双击qwt.pro这个文件,用qt Creator打开(建议用qt Creator打开)

点编译(先在debug下和release模式下编译都一样),就开始编译了,你可以去上个厕所,喝杯茶,上上网

编译完会有个错误提示


这个正常,不用理他,只要编译输出那里没有错误提示就行

好了,这就ok了,复杂的编译过程就是点几个鼠标而已

编译完后会在原来的lib文件夹下生成dll和lib,同时会在目录外生成qt creator用的插件dll


我们用到的是qwt.dll,qwt.lib,qwtd.dll,qwtd.lib。前者对应release版本,后者对应debug版本,其他文件可以删除

在build-qwt-Desktop_Qt_5_1_1_MSVC201x_32bit-Release目录下的designer目录下的plugins目录下的designer目录下(@_@,囧rz)你会发现qwt_designer_plugin.dll和qwt_designer_plugin.lib


这些就是配置qwt的必要文件

3.2配置qwt

3.2.1 集成进Qt Designer

找到qt安装目录


目录下的tools文件夹是qt creator的安装位置,里面就是QtCreator,找到QtCreator\bin\plugins\designer\文件夹下,把编译好的qwt_designer_plugin.dll放入。打开qtcreator,就能看的qwt控件了。

拖放几个控件试着运行,这时软件肯定是编译不过的


由于头文件dllqt creator都没有找到,所以肯定是编译不过的,现在又两种方法

3.2.2 集成Qt Creator

方法1:(建议使用)

需要用到qwt的项目,打开它的pro文件
加入如下语句:
其中根据每个人的文件位置不一样,只需要改动第一个语句就可以,就是定位到qwt的安装位置的语句
[html] view plaincopy
在CODE上查看代码片派生到我的代码片
  1. <span style="font-size:12px;">#qwt设置  
  2. QWT_ROOT = d:/Qt/qtctrl/qwt-6.1.0  
  3. include( $${QWT_ROOT}/qwtfunctions.pri )  
  4. INCLUDEPATH += $${QWT_ROOT}/src  
  5. DEPENDPATH  += $${QWT_ROOT}/src  
  6. %QWT_CONFIG  += QwtDll %如果需要使用继承时需要这句 -- 下面依次类推  
  7.   
  8. contains(QWT_CONFIG, QwtFramework) {  
  9.     LIBS      += -F$${QWT_ROOT}/lib  
  10. }  
  11. else {  
  12.   
  13.     LIBS      += -L$${QWT_ROOT}/lib  
  14. }  
  15. qwtAddLibrary(qwt)  
  16. contains(QWT_CONFIG, QwtOpenGL ) {  
  17.   
  18.     QT += opengl  
  19. }  
  20. else {  
  21.   
  22.     DEFINES += QWT_NO_OPENGL  
  23. }  
  24. contains(QWT_CONFIG, QwtSvg) {  
  25.   
  26.     QT += svg  
  27. }  
  28. else {  
  29.   
  30.     DEFINES += QWT_NO_SVG  
  31. }  
  32. win32 {  
  33.     contains(QWT_CONFIG, QwtDll) {  
  34.         DEFINES    += QT_DLL QWT_DLL  
  35.     }  
  36. }  
  37. #end qwt set</span>  
然后可以成功编译应用程序了

方法2:(非常不建议)

把lib文件放置qt sdk的lib文件夹下,dll文件放置在sdk的bin文件夹下
qt sdk目录根据版本不同不一样,我的是vs2012版的,在c:\Qt\Qt5.1.1\5.1.1\msvc2012\目录下其他的同理,2010的就在Qt\Qt5.1.1\5.1.1\msvc2010\

把qwt.dll和qwtd.dll复制到qt安装目录下的bin文件夹中
把qwt.lib和qwtd.lib文件复制到qt安装目录的lib文件夹下

 


把src文件夹下的头文件复制到qt安装文件夹下的include文件夹下(新建qwt文件夹)
这样就可以了,但是还是不能编译成功,因为需要设置一下pro文件
在pro文件下加入如下语句
[cpp] view plaincopy
在CODE上查看代码片派生到我的代码片
  1.       
  2. <span style="font-size:12px;">#qwt设置  
  3. include(d:/Qt/qwt-6.1.0/qwtfunctions.pri)  
  4. DEFINES *= QWT_DLL  
  5. CONFIG += qwt  
  6. LIBS += -Ld:/Qt/Qt5.0.2/5.0.2/msvc2010/lib-lqwt  
  7. INCLUDEPATH += d:/Qt/qwt-6.1.0/src  
  8. DEPENDPATH += d:/Qt/qwt-6.1.0/src  
  9. qwtAddLibrary(qwt)  
  10. #end qwt</span>  
至此qwt的安装配置就完成了。
qwt文件夹下有说明文档和例子,通过他们都能掌握基本的操作,这里暂不细说了

注:

当你用qt creator编译发现连接出问题时,你可以试下点“构建”-“清理所以项目”,当这个也没有反应时,你可以手动把编译的那个文件夹(默认和项目同级类似于“build-qwt-Desktop_Qt_5_1_1_MSVC201x_32bit-Release”这样的样式)全部删除。之后再编译,如果还有连接问题就是你代码有问题了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BFPRT

在一大堆数中求其前k大或前k小的问题&#xff0c;简称TOP-K问题。而目前解决TOP-K问题最有效的算法即是BFPRT算法&#xff0c;其又称为中位数的中位数算法&#xff0c;该算法由Blum、Floyd、Pratt、Rivest、Tarjan提出&#xff0c;最坏时间复杂度为O(n)O(n)。 读者要会快速排序…

180°舵机的使用步骤

一.步骤 1.首先查看舵机的运行参数&#xff0c;包括工作的电压和电流&#xff0c;转1&#xff08;60&#xff09;需要的脉宽是多少。 2.根据舵机提供的参数&#xff0c;算出需要的PWM的周期和脉宽的范围。 3.通过单片机或者其他数字电路产生相应的PWM波&#xff0c;便可以驱…

Qt开源项目

图像处理&#xff1a; Krita digikam inkscape 编辑器&#xff1a; LiteIDE QDevelper KDeveloper Monkey Studio TeXstudio 绘图&#xff1a; ZeGrapher QtiPlot qcustomplot QWT HotShots Inkscape 三维建模&#xff1a; QCAD FreeCAD OpenModelica LibreCAD 音乐&#xff1a…

使用Python作为计算器

数值 1.python支持基本的数学运算符&#xff0c;而且应用python你可以像写数学公式那样简单明了。 eg: >>> 2 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5 # division always returns a floating point number 1.6 2.除法…

java整体打印二叉树

一个调的很好的打印二叉树的代码。 用空格和^v来表示节点之间的关系。 效果是这样&#xff1a; Binary Tree: v7v v6v ^5^ H4H …

前缀树

是一种哈希树的变种。典型应用是用于统计&#xff0c;排序和保存大量的字符串&#xff08;但不仅限于字符串&#xff09;&#xff0c;所以经常被搜索引擎系统用于文本词频统计。它的优点是&#xff1a;利用字符串的公共前缀来减少查询时间&#xff0c;最大限度地减少无谓的字符…

学习4层板设计

今天是第一天尝试设计四层PCB板&#xff0c;以前只画过双层板&#xff0c;所以今天花了好多时间来熟悉多层板的设计方法&#xff0c;现在做一下整理&#xff0c;也方便其他同胞少走弯路~~~我用的软件是Altium Designer 6&#xff08;AD6&#xff09;步骤如下&#xff1a; 1、随…

PCB设计的基本步骤

一.方案的设计 1.与客户沟通&#xff0c;确定电路的功能和相关设计指标&#xff08;如&#xff1a;电源&#xff0c;功耗等&#xff09;。 2.画出项目的硬件功能框图。 3.设计出多种方案&#xff0c;并对多种方案进行对比&#xff0c;最终选出最合适的方案。 4.根据上述所…

堆应用例题三连

一个数据流中&#xff0c;随时可以取得中位数。 题目描述&#xff1a;有一个源源不断地吐出整数的数据流&#xff0c;假设你有足够的空间来保存吐出的数。请设计一个名叫MedianHolder的结构&#xff0c;MedianHolder可以随时取得之前吐出所有树的中位数。 要求&#xff1a; 1…

HistCite 的使用方法

摘要 读文献自然要读精品&#xff0c;在面对一个陌生领域&#xff0c;如何才能以最快速度定位精品文献呢&#xff1f;本文将详细介绍 HistCite 的使用方法&#xff0c;结合 Web of Science 和 Endnote &#xff0c;演示如何在几个小时之内&#xff0c;对某个陌生领域的文献进行…

数组基操三连(2)

转圈打印矩阵 题目&#xff1a; 给定一个整型矩阵matrix&#xff0c;请按照转圈的方式打印它。例如&#xff1a;1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,打印结果为&#xff1a;1,2,3,4,5,12,16,15,14,13,9,5,6,7,11,10 要求&#xff1a; 额外空间复杂度为O&#xff08;1&a…

数据结构课上笔记7

介绍栈和队列基本概念和用法。 设输入序列1、2、3、4&#xff0c;则下述序列中&#xff08; &#xff09;不可能是出栈序列。【中科院中国科技大学2005】 A. 1、2、3、4 B. 4、 3、2、1 C. 1、3、4、2 D.&#xff14;、1、2、3 选…

ROC曲线与AUC值

ROC曲线与AUC值 1.概述AUC&#xff08;Area Under roc Curve&#xff09;是一种用来度量分类模型好坏的一个标准。这样的标准其实有很多&#xff0c;例如&#xff1a;大约10年前在machine learning文献中一统天下的标准&#xff1a;分类精度&#xff1b;在信息检索(IR)领域中常…

设置SSH免密码自动登录(使用别名)

每次登录服务器都要写一大串的用户名&#xff08;username服务器地址&#xff09;和登录密码十分的繁琐&#xff0c;所以本文就告诉大家如何通过修改配置文件&#xff0c;达到只需要输入&#xff1a;ssh jack(你起的别名)就可以一键登录到服务器中。 1.创建公钥&#xff08;相当…

串的定长表示

思想和代码都不难&#xff0c;和线性表也差不多&#xff0c;串本来就是数据受限的线性表。 串连接&#xff1a; #include <stdio.h> #include <string.h> //串的定长顺序存储表示 #define MAXSTRLEN 255 //用户可在255以内定义最大串长 typedef unsigned cha…

周志华《Machine Learning》 学习笔记系列(1)--绪论

机器学习致力于研究如何通过计算手段&#xff0c;利用经验来改善系统本身的性能&#xff0c;在计算机系统中&#xff0c;“经验”通常是以“数据”形式存在的&#xff0c;所以&#xff0c;机器学习的主要内容是关于在计算机上从数据中产生“模型”的算法&#xff0c;即学习算法…

轻松理解牛顿迭代法且用其求平方根

牛顿迭代法概述 牛顿迭代法&#xff08;Newton’s method&#xff09;又称为牛顿-拉弗森方法&#xff08;Newton-Raphson method&#xff09;&#xff0c;它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 牛顿迭代公式 设rrr是f(x)0f(x)0f(x)0的根&#…

map+DP leetcode446

如果数字序列由至少三个元素组成并且任何两个连续元素之间的差异相同&#xff0c;则称为算术序列。 例如&#xff0c;这些是算术序列&#xff1a; 1&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;9 7&#xff0c;7,7&#xff0c;7 3&#xff0c;-1&#xff0c;-5&am…

如何使用cookie信息,完成自动登录

在做爬虫任务的时候&#xff0c;我们常常会遇到很多网页必须登录后&#xff0c;才可以开放某些页面。所以登录是爬取网页的第一步。但是&#xff0c;通过post表单&#xff08;包含用户名和密码&#xff09;的方法&#xff0c;对于那些不需要输入比较复杂的验证码的网页&#xf…

Spring Cloud 学习笔记(1 / 3)

Spring Cloud 学习笔记&#xff08;2 / 3&#xff09; Spring Cloud 学习笔记&#xff08;3 / 3&#xff09; ---01_前言闲聊和课程说明02_零基础微服务架构理论入门03_第二季Boot和Cloud版本选型04_Cloud组件停更说明05_父工程Project空间新建06_父工程pom文件07_复习Depend…