QWT开源库使用

源代码地址:Qwt User's Guide: Qwt - Qt Widgets for Technical Applications

Qwt库包含GUI组件和实用程序类,它们主要用于具有技术背景的程序。除了2D图的框架外,它还提供刻度,滑块,刻度盘,指南针,温度计,轮和旋钮,以控制或显示double类型的值,数组或范围。

1.下载Qwt 6.1.3

打开qwt的下载页,找到6.1.3版本目录。

下载qwt-6.1.3.zip(windows下的安装文件),qwt-6.1.3.pdf(qwt开发文档),qwt-6.1.3.qch(帮助文档)。

2.安装QWT

(1)解压下载好的qwt-6.1.3.zip文件,可以看到qwt.pro工程文件及其他文件。

(2)使用Qt Creator打开qwt.pro

(3)打开后对qwt工程,进行qmake和build,编译的过程需要一定的时间,请耐心等候。

(4)编译完成后可以在编译目录下的lib文件夹下看到以下文件

  • MSVC版本下是qwt.dll、qwt.lib、qwtd.dll、qwtd.lib。同时可以在designer\plugins\designer文件夹下看到插件qwt_designer_plugin.dll和qwt_designer_plugin.lib
  • MinGW版本下是qwt.dll、libqwt.a、qwtd.dll、libqwtd.a。同时可以在designer\plugins\designer文件夹下看到插件qwt_designer_plugin.dll和libqwt_designer_plugin.a
3.配置QWT
  • 将build-qwt-Desktop_Qt_5_12_3_MinGW_32_bit-Debug\lib下的libqwt.a和libqwtd.a复制到D:\Qt\Qt5.12.3\5.12.3\mingw73_32\lib下。
  • 将build-qwt-Desktop_Qt_5_12_3_MinGW_32_bit-Debug\lib下的qwt.dll和qwtd.dll复制到D:\Qt\Qt5.12.3\5.12.3\mingw73_32\bin下。
  • 将build-qwt-Desktop_Qt_5_12_3_MinGW_32_bit-Debug\plugins\designer下的qwt_designer_plugin.dll复制到D:\Qt\Qt5.12.3\5.12.3\mingw73_32\plugins\designer下。
  • 在D:\Qt\Qt5.12.3\5.12.3\mingw73_32\include下新建一个Qwt的文件夹,将D:\Qwt-6.1.4\src下的所有.h头文件复制到新建的Qwt文件夹下。
4.使用QWT

创建一个新的项目,在pro文件中需要添加如下代码:

LIBS += -LD:\Qt\Qt5.12.3\5.12.3\mingw73_32\lib –lqwtd 
LIBS += -LD:\Qt\Qt5.12.3\5.12.3\mingw73_32\lib -lqwt 
INCLUDEPATH += D:\Qt\Qt5.12.3\5.12.3\mingw73_32\include\QtQWT

其中目录为Qt安装目录

5.查看qwt插件

打开ui文件,右键选择"用....打开" -> "Qt Designer"

注:此时qwt插件只能在Designer设计器中找到,如果你使用官网直接下载的Qt Creator的话,是无法在其“设计”窗口中看到qwt控件插件的,原因是官网编译的Windows下的Creator软件是使用MSVC编译器编译的,因此用MinGW编译的qwt插件是无法被Creator正确识别的。解决方法是你可以选择重新编译Creator或者qwt,使得它们基于同一种编译平台.

6.编译qwt工程中的例子
  1. 用Qt Creator打开qwt工程,编译工程下的examples例子,过程可能有些久,请耐心等待。
  2. 编译结束后,可以在构建目录下的examples\bin目录下查看编译好的exe文件。点击exe文件就可查看例子。
  3. 如果报错缺少qt的dll文件,可以有1、把dll文件从qt安装目录中拷贝过来,2、在windows环境变量中添加Qt的安装目录\bin等方式解决。
7.安装QWT帮助文档
  1. 将下载好的qwt-6.1.3.qch文件放入到Qt安装目录下,例如:C:\Qt\Qt5.8.0\Docs\Qt-5.8
  2. 打开Qt Creator,在“工具-> 选项-> 帮助-> 文档 -> 添加”,然后选择Qt安装目录下的qch文件。
  3. 然后可以在Qt Creator帮助中查看qwt的帮助文档了。
8.Qwt常见的绘制例程

可以在Qt Designer中看到Qwt的控件,如下:

基本上,所需要的二维图形,Qwt都能绘制。

常见的类:

QwtAbstractScale: 包含刻度尺的所有类的抽象基类;
QwtAbstractScaleDraw:绘制刻度尺的抽象基类;
QwtAbstractSlider:滑块部件的抽象基类;
QwtAlphaColorMap:可以改变颜色的alpha值;
QwtAnalogClock:时钟的模拟类;
QwtArrayData:包含2个QwtArray<double>实例的数据类;
QwtArrowButton:箭头按钮;
QwtClipper:剪贴板类;
QwtColorMap:提供数值到颜色的映射功能;
QwtCompass:指南针部件;
QwtCompassMagnetNeedle:指南针部件的磁针;
QwtCompassRose:罗盘部件的抽象基类;
9.QwtPlot类

它继承自QFrame和QwtPlotDict,QFrame提供一个QWidget的框架,QwtPlotDict为QwtPlot管理在其中的plot items,就是绘制的项。

在QwtPlot上我们可以绘制无限多个的plot items,这些绘制项可以是曲线(QwtPlotCurve),标签(QwtPlotMarker),网格(QwtPlotGrid),或者其它任意的从QwtPlotItem派生出来的子类。

一个QwtPlot可以有四个轴,每个plot item连接到x和y轴上。在轴上的比例变换可以使用QwtScaleDiv,对于plot items比例可以使用QwtScaleEngine来计算,在每个轴上,QwtScaleEngine可以被单独设置。

严格的说来,它只是一个视图窗口,真正的绘制设备是它的中心部件QwtPlotCanvas类。

10.QwtPlotCanvas类

QwtPlot的画布,继承自QFrame,QwtPlot的核心绘制部件。

11.QwtPlotDict类

QwtPlotDict类是一个Item的字典,用于管理添加到QwtPlot上的所有图元项。QwtPlotDict 按照Z值的递增顺序组织items. 如果autoDelete()设置为可用,所有依附的items会在QwtPlotDict的析构函数中被删除。

12.QwtPlotItem类

所有项的基类(base class for items)显示在图表的画布上。QwtPlotItem是一个抽象类,当你需要派生出一个新的QwtPlotItem类时,需要实现YourPlotItem::draw()方法。在draw中可以绘制你想要的图表项。比如说自定义背景图。

13.QwtPlotCurve类

通过此类中的构造函数来设置曲线的渲染方式(绘画反锯齿setRenderHint),设置曲线的颜色,曲线是否显示与坐标轴之间的矩形区域,用于绘制曲线,可以设置曲线与坐标轴之间的阴影部分。

14.QwtLegend类

图例,就是图表界面上的一个类似于CheckButton的控件,可以实现图例的点击事件来达到是否显示图例对应曲线的效果。

15.QwtScaleDraw类

QwtScaleDraw是绘制标尺类,它继承自抽象基类QwtAbstractScaleDraw,用于绘制普通直尺,一个刻度尺由多个部分组成,由QwtAbstractScaleDraw::ScaleComponent定义:Backbone(主干)、Ticks(刻度线)、Labels(标签)。

16.QwtSymbol类

用于显示图表的标记,比如把每个坐标点显示为圆形,或者是画个叉(X)。

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

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

相关文章

STM32F407移植OpenHarmony笔记6

继上一篇笔记&#xff0c;编译好STM32的裸机程序&#xff0c;能点亮LED灯了。 下一步就是启动liteos_m内核了。 不过为了更好的调试代码&#xff0c;需要先把printf重定向到串口&#xff0c;基于gcc的printf重定向和Keil不一样。 直接新建printf.c&#xff0c;在里面重写printf…

Gin 框架之jwt 介绍与基本使用

文章目录 一.JWT 介绍二.JWT认证与session认证的区别2.1 基于session认证流程图2.2 基于jwt认证流程图 三. JWT 的构成3.1 header : 头部3.2 payload : 负载3.2.1 标准中注册的声明 (建议但不强制使用)3.2.2 公共的声明3.2.3 私有的声明3.2.4 定义一个payload 3.3 signatrue : …

linux平台 LED情报板网关项目总结

LED情报板目前已经基本稳定 主要存在两个版本LED1.5 和LED2 两个版本的主要差别是 &#xff1a; 1.1.5的配置文件存在本地 2.0的存在平台 需要通过接口从平台获取 2.1.5的下发消息的时候需要同步返回 2.0的是异步返回&#xff0c;所以1.5的要尽可能完成 不然会导致发 布平台…

确认项目范围基准 常见的5大问题

确认项目范围基准的过程中&#xff0c;经常会遇到一些问题&#xff0c;如经常出现项目范围不明确、范围变更频繁等问题&#xff0c;往往会导致项目延期、超预算、质量下降等问题&#xff0c;严重的话可能会导致项目失败。 因此&#xff0c;我们在进行项目范围基准确认时&#x…

MySQL数据库基础合集

MySQL数据库基础合集 目录 MySQL数据库基础合集SQL关键字DDL关键字DML关键字DQL关键字DCL关键字约束关键字 SQL基础数据类型整数类型字符类型浮点类型时间类型 数据定义语言DDL1.查看数据库2.创建库3.删除库4.切换库5.创建表6.删除表7.查看表8.查看表属性9.插入列10.修改列11.设…

2023年数学大事件盘点

目录 ChatGPT驱动数学变革提速2023年阿贝尔奖花落得克萨斯大学奥斯汀分校教授路易斯卡法雷利一个全新的更紧的拉姆齐数的上界埃尔德什-图兰猜想新突破几何学家卡拉比逝世中国科学院院士、数学家杨乐逝世参考文献悄悄地,春节马上来临,在这辞旧迎新的日子里也是我们三行数学总结…

Adobe Camera Raw forMac/win:掌控原始之美的秘密武器

Adobe Camera Raw&#xff0c;这款由Adobe开发的插件&#xff0c;已经成为摄影师和设计师们的必备工具。对于那些追求完美、渴望探索更多创意可能性的专业人士来说&#xff0c;它不仅仅是一个插件&#xff0c;更是一个能够释放无尽创造力的平台。 在数字摄影时代&#xff0c;R…

github官网连接超时解决方案(图解版,亲测成功)

目录 一、521github镜像站1.1、521github镜像站访问地址 二、Github520镜像站2.1、Github520镜像站访问地址地址 三、UsbEAm Hosts Editor加速器3.1、UsbEAm加速器下载、安装及使用 四、SwitchHosts加速器4.1、SwitchHosts加速器下载、安装及使用 五、原名&#xff08;Steam)目…

blender 画笔的衰成曲线Falloff Curve

Blender画笔是用来在雕刻模式或绘画模式下对物体进行修改的工具。画笔有不同的类型和设置&#xff0c;可以影响画笔的效果和外观。你提到的选项是画笔的衰减曲线&#xff08;Falloff Curve&#xff09;的预设&#xff0c;它们决定了画笔的强度如何随着距离中心的距离而变化。 …

计算机设计大赛 深度学习 opencv python 实现中国交通标志识别

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

【pdf密码】怎么打印加密的PDF文件?

PDF文件是可以打开查看的&#xff0c;但是现在不能编辑、不能打印&#xff0c;功能栏中的功能都是灰色的&#xff0c;这种设置了加密的PDF文件该如何加密&#xff1f; 如果PDF中的大多数功能按钮以及打印按钮都是灰色的状态&#xff0c;那就证明是文件的问题导致不能打印的。 …

Sentinel之力:解锁@SentinelResource注解的神奇威力

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Sentinel之力&#xff1a;解锁SentinelResource注解的神奇威力 前言SentinelResource注解基础&#xff1a;数字法术的咒语SentinelResource 注解的基本概念和作用&#xff1a;在方法上添加 SentinelRe…

Linux 入门基础知识(一)—— Linux的基本使用

Linux 入门基础知识 一、Linux的基本使用和配置1.1、终端1.2、消耗内存1.3、运行级别1.6、登录前欢迎语1.5、登录后欢迎语1.6、shell1.7、ps aux1.8、设置主机名1.9、whoami和who am i1.10、命令提示符 二、Linux执行命令的过程详解和命令类型2.1、命令执行2.2、hash缓存表2.3、…

InputNumber数字输入框(antd-design组件库)简单使用

1.InputNumber数字输入框 通过鼠标或键盘&#xff0c;输入范围内的数值。 2.何时使用 当需要获取标准数值时。 组件代码来自&#xff1a; 数字输入框 InputNumber - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:hello-world react项目antd组件-demo:hello…

浏览器内存泄漏排查指南

1、setTimeout执行原理 使用setInterval/setTimeOut遇到的坑 - 掘金 2、Chrome自带的Performance工具 当我们怀疑页面发生了内存泄漏的时候&#xff0c;可以先用Performance录制一段时间内页面的内存变化。 点击开始录制执行可能引起内存泄漏的操作点击停止录制 如果录制结束…

springboot整合mqtt实现消息订阅和推送

前言 mica-mqtt-client-spring-boot-starter是一个基于Spring Boot的MQTT客户端启动器&#xff0c;它集成了mica-mqtt客户端&#xff0c;提供了在Spring Boot应用程序中使用MQTT协议进行消息通信的能力。以下是关于mica-mqtt-client-spring-boot-starter的简介&#xff1a; 特…

dvwa靶场xss储存型

xss储存型 xxs储存型lowmessage框插入恶意代码name栏插入恶意代码 medium绕过方法 high xxs储存型 攻击者事先将恶意代码上传或储存到漏洞服务器中&#xff0c;只要受害者浏览包含此恶意代码的页面就会执行恶意代码。产生层面:后端漏洞特征:持久性的、前端执行、储存在后端数据…

03 Redis之命令(基本命令+Key命令+String型Value命令与应用场景)

Redis 根据命令所操作对象的不同&#xff0c;可以分为三大类&#xff1a;对 Redis 进行基础性操作的命令&#xff0c;对 Key 的操作命令&#xff0c;对 Value 的操作命令。 3.1 Redis 基本命令 一些可选项对大小写敏感, 所以应尽量将redis的所有命令大写输入 首先通过 redis-…

【C项目】顺序表

简介&#xff1a;本系列博客为C项目系列内容&#xff0c;通过代码来具体实现某个经典简单项目 适宜人群&#xff1a;已大体了解C语法同学 作者留言&#xff1a;本博客相关内容如需转载请注明出处&#xff0c;本人学疏才浅&#xff0c;难免存在些许错误&#xff0c;望留言指正 作…

初识webpack(一)概念、入口配置、输出配置、loader等

目录 (一)概念 webpack的依赖图 (二)webpack的基本使用 (三)webpack的配置文件 1.入口(entry)配置 2.输出(output)配置 (三)loader 1.css文件处理 (1)安装css-loader和style-loader (2)在webpack.config.js中配置loader 2.less文件处理 3.postcss的使用 (1)安装…