QWT开源库使用

news2024/9/20 20:40:44

源代码地址: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.coloradmin.cn/o/1424453.html

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

相关文章

EDR、SIEM、SOAR 和 XDR 的区别

在一个名为网络安全谷的神秘小镇&#xff0c;居住着四位守护者&#xff0c;他们分别是EDR&#xff08;艾迪&#xff09;、SIEM&#xff08;西姆&#xff09;、SOAR&#xff08;索亚&#xff09;和XDR&#xff08;艾克斯&#xff09;。他们各自拥有独特的能力&#xff0c;共同守…

Android组件化中的Arouter学习

假设现在有两个业务组件登录和问答模块之间需要进行通信&#xff0c;可能会想到用反射的方式&#xff0c;是可以但是会影响性能&#xff0c;而写的代码比较多类名这些要记清楚。 路由可以看做表&#xff0c;每个map对应一张表 我们可以试着这么写&#xff0c;完成MainActivity跳…

03. 【Linux教程】安装虚拟机

前面小节介绍了 Linux 和 GUN 项目&#xff0c;本小节开始学习如何在 Windows 上安装虚拟机&#xff0c;虚拟机安装之后可以在虚拟机中安装 Linux 相关的操作系统&#xff0c;常见的虚拟机软件有 VirtualBox、VMware 等等&#xff0c;本教程使用 VMware 虚拟机软件来演示如何安…

【Linux取经路】进程控制——进程等待

文章目录 一、进程创建1.1 初识 fork 函数1.2 fork 函数返回值1.3 写时拷贝1.4 fork 的常规用法1.5 fork 调用失败的原因1.6 创建一批进程 二、进程终止2.1 进程退出场景2.2 strerror函数2.3 errno全局变量2.4 程序异常2.5 进程常见退出方法2.6 exit 函数2.7 _exit 函数和 exit…

2024年股市走向!温州哪家证券公司股票开户佣金最低呢,最低可以多少?

​ 对于2024年股市的预测很难做出准确的判断&#xff0c;因为股市受到多种因素的影响&#xff0c;包括经济状况、政策变化、国际形势等。然而&#xff0c;我们可以根据当前的一些趋势和因素来对未来的股市做出一些预测。 首先&#xff0c;随着全球经济的逐步恢复&#xff0c…

【从零开始的rust web开发之路 三】orm框架sea-orm入门使用教程

【从零开始的rust web开发之路 三】orm框架sea-orm入门使用教程 文章目录 前言一、引入依赖二、创建数据库连接简单链接连接选项开启日志调试 三、生成实体安装sea-orm-cli创建数据库表使用sea-orm-cli命令生成实体文件代码 四、增删改查实现新增数据主键查找条件查找查找用户名…

【C语言】初阶指针(2)

目录 前言 1. 指针访问数组 1.1 数组名的含义 1.2 使用指针访问数组 2. 一维数组传参的本质 3. 二级指针 4. 指针数组 4.1 指针数组模拟二维数组 结语 前言 在本篇文章中&#xff0c;我们将要一起来探讨指针与数组之间的关系&#xff0c;以及如何理解指针数组及其运用…

Vue.js 中子组件向父组件传值的方法

Vue.js 是一款流行的 JavaScript 前端框架&#xff0c;它提供了一套完整的工具和 API&#xff0c;使得开发者可以更加高效地构建交互式的 Web 应用程序。其中&#xff0c;组件化是 Vue.js 的一个核心概念&#xff0c;通过组件化可以将一个复杂的应用程序拆分成多个独立的部分&a…

通过与chatGPT交流实现零样本事件抽取

1、写作动机&#xff1a; 近来的大规模语言模型&#xff08;例如Chat GPT&#xff09;在零样本设置下取得了很好的表现&#xff0c;这启发作者探索基于提示的方法来解决零样本IE任务。 2、主要贡献&#xff1a; 提出了基于chatgpt的多阶段的信息抽取方法&#xff1a;在第一阶…

VSCode 插件集

文章目录 翻译(英汉词典)Auto Close TagAuto Rename TagBetter CommentsBracket Pair Colorization TogglerChinese (Simplified) (简体中文)colorizeHighlight Matching TagImage previewJAR ViewerLive ServerMarkdown Preview EnhancedMaterial Icon ThemeMaterial Themeope…

uniapp 使用canvas 画海报,有手粘贴即可用(拆成组件了,看后面)

1.直接使用 html部分 <view click"doposter">下载海报</view> <canvas canvas-id"myCanvas" type2d style"width: 370px; height: 550px;opcity:0;position: fixed;z-index:-1;" id"myCanvas" />js 部分 drawBac…

【Vue】2-11、组件的生命周期

一、生命周期 & 声明周期函数 生命周期&#xff08;Life Cycle&#xff09;是值一个组件从 创建 -> 运行 -> 销毁 的整个阶段&#xff0c;强调的是一个时间段。 生命周期函数是由 Vue 框架提供的内置函数&#xff0c;会伴随着组件的生命周期&#xff0c;自动按次序…

【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

机器学习数学基础

机器学习基础 1、标量、向量、矩阵、张量2、概率函数、概率分布、概率密度、分布函数3、向量的线性相关性4、最大似然估计5、正态分布(高斯分布)6、向量的外积(叉积)7、向量的内积(点积)8、超平面(H)1、标量、向量、矩阵、张量 标量、向量、矩阵和张量是线性代数中不同…

周期承压下的徐工机械:收入持续负增长,大肆并购风险犹存

撰稿|行星 来源|贝多财经 工程机械行业的发展程度是衡量工业化水平的关键指标&#xff0c;亦是一直以来备受国家与市场关注的高成长板块。 在探索新发展增量的大军中&#xff0c;徐工机械&#xff08;SZ:000425&#xff09;活跃工程机械市场&#xff0c;寻求着利润与品质的最…

springboot140体育馆使用预约平台的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

草图导入3d之后渲染模型发光怎么回事?---模大狮模型网

在草图大师中&#xff0c;当导入3D模型之后发现模型发光通常是由于模型的材质属性或灯光设置所导致的。以下是一些可能的原因和解决方法&#xff1a; 材质属性设置&#xff1a;某些3D模型文件可能包含了发光材质属性&#xff0c;导致模型在草图大师中显示为发光状态。您可以尝试…

第四次项目(配置dns服务的正反向解析)

目录 实验要求 实验步骤 一、基础配置 1.1、服务端配置静态IP 1.2、客户端配置静态IP 二、配置dns服务的正向解析 2.1、服务端编辑主配置文件named.conf 2.2、服务端编辑主配置文件named.rfc1912.zones 2.3&#xff0c;服务端编辑数据配置文件&#xff0c;使用拷贝…

opencvb 十七 使用cmake配置opencv c++项目

1、cmake简介 1.1 cmake是什么 CMake是一个开源、跨平台的编译&#xff08;Build&#xff09;工具&#xff0c;是用来构建、测试和打包软件的。它能够用简单的语句来描述所有平台的编译过程。它能够输出各种各样的makefile或者project文件&#xff0c;能测试编译器所支持的C特…

【ASP.NET Core 基础知识】--Web API--创建和配置Web API(一)

一、简介 Web API&#xff08;Web Application Programming Interface&#xff09;的重要性在于其在现代软件开发中扮演着关键的角色。以下是一些关于Web API重要性的方面&#xff1a; 跨平台交互&#xff1a; Web API允许不同平台、不同技术栈的应用程序进行通信。无论是Web…