Qwt开发笔记(一):Qwt简介、下载以及基础demo工程模板

news2024/10/2 6:25:25

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128146985

红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门)

Qt开发专栏:三方库开发技术

上一篇:没有了
下一篇:敬请期待…


前言

  QWT开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,本系列旨在系统解说并逐步更新其各种Demo示例。


注意

  本文章介绍的版本为Qwt6.2.0,该版本为2021年7月左右发布的。


多年前文章

  (本篇不再整理了)
  《Qt开发笔记之Qwt(一):Qwt介绍、编译与Demo》
  《Qt开发笔记之Qwt(二):Qwt仪表盘的基本使用》


Demo演示

  在这里插入图片描述


Qwt简介

简介

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

支持Qt版本

  Qwt 6.2可能适用于您找到Qt的所有环境。它与Qt 4.8和所有Qt5版本兼容。


演示图

曲线图

  在这里插入图片描述

光谱图,等高线图

  在这里插入图片描述

条形图、柱状图

  在这里插入图片描述

其他绘图

  在这里插入图片描述

表盘、圆规、旋钮、滑块等

  在这里插入图片描述


下载

  Qt平台所有>=Qt 4.8的版本都将在6.x分支中得到主动支持。
  sourceforge下载地址:https://sourceforge.net/projects/qwt/files
  在这里插入图片描述
  csdn粉丝0积分下载地址:https://download.csdn.net/download/qq21497936/87231942
  压缩包包含了:

  • qwt-6.2.0.zip
    带有Qwt源码的Zip文件和Windows的html文档
  • qwt-6.2.0标准bz2
    压缩的tar文件,带有Qwt源代码和UNIX系统(Linux、Mac…)的html文档
  • qwt-6.2.0.pdf
    Qwt文档为PDF文档。
  • qwt-6.2.0.qch
      Qwt文档作为Qt压缩帮助文档,可以加载到Qt助手或创建者中。在Qt Creator中,上下文相关的帮助将像Qt类一样可用。

模块化部署到工程

  这里我们跟常规方式不一样,常规方式是先编译然后加入到项目中,我们是直接源码带入到源码中编译,第一次编译时间会较长,但是后续不暴露qwt的动态库,更重要的时候,当我们灵活切换平台的时候,不需在编译库和引入库上额外花费时间,以达到模块化添加的终极目的—包含模块.pri文件即可。
  查看qwt.pro文件:
  在这里插入图片描述
  所以,包含源码src工程即可,然后查看src.下:
  在这里插入图片描述
  所以包含src.pri即可。
  最终qwt6.2.20.pri模块内容如下:
  在这里插入图片描述
  这时候引入不进去:
  在这里插入图片描述
  需要多做两步骤,如下图:
  在这里插入图片描述

  把所文件前面加上$$PWD(修改之前,请copy一份备份),还得包含pro编译时的三个配置文件,如下图:
  在这里插入图片描述

  最终带qwt6.2.0源码模块如下:
  在这里插入图片描述
  然后qmake,编译(主要检测一下是否移植到工程当作模块化源码成功):
  在这里插入图片描述
  使用-j8不到3分钟就编完了,后续开发中因为此模块作为源码模块包含,在非clean模式下,只需要编译一次,但是避免了不同环境移植工程出现的各种环境问题,让团队成员之间交互,已经模块包含组装最简单化,从而提升沟通效率和开发效率。


模块化

  在这里插入图片描述


基础环境Demo

  这里我们做一个只是调用图的简单使用,用来确认该模块可以被调用,能正常工作,搭建基础模板demo。

演示效果

  在这里插入图片描述
  在这里插入图片描述

初始化源码

void TestWidget::initQwt()
{
    _pQwtPlot = new QwtPlot(this);

    // 设置背景色
    _pQwtPlot->setCanvasBackground(QBrush(QColor(255, 255, 255)));

    // 设置x1坐标轴
    {
        _pQwtPlot->setAxisTitle(QwtPlot::xBottom, "时间(s)");
    }
    // 设置y1坐标轴
    {
        _pQwtPlot->setAxisTitle(QwtPlot::yLeft, "采集数值");
    }

    // 设置绘图区域网格
    {
        QwtPlotGrid *pGrid = new QwtPlotGrid();
        pGrid->setMajorPen(Qt::gray, 1, Qt::SolidLine);
        pGrid->attach(_pQwtPlot);
    }
    // 设置图例
    {
        QwtLegend *pLegend = new QwtLegend();
        pLegend->setDefaultItemMode(QwtLegendData::Checkable);
        _pQwtPlot->insertLegend(pLegend, QwtPlot::TopLegend);
    }
    // 设置曲线0
    {
        QwtPlotCurve *pCurve = new QwtPlotCurve();
        pCurve->setTitle("电压(mV)");
        pCurve->setPen(Qt::blue, 2);
        pCurve->setRenderHint(QwtPlotItem::RenderAntialiased, true);
        // 曲线0符号对象
        {
            QwtSymbol *pSymbol = new QwtSymbol(QwtSymbol::Ellipse);
            pSymbol->setPen(Qt::red);
            pSymbol->setSize(4);
        }
        // 曲线0数据
        {
            QVector<double> vectorX;
            QVector<double> vectorY;
            vectorX.append(0); vectorY.append(0);
            vectorX.append(1); vectorY.append(2);
            vectorX.append(2); vectorY.append(3);
            vectorX.append(4); vectorY.append(4);
            pCurve->setSamples(vectorX, vectorY);
            // 将曲线添加到绘图
            pCurve->attach(_pQwtPlot);
        }
    }
}

基础模板v1.0.0

   在这里插入图片描述


入坑

入坑一:融合之后,定义槽函数slots关键字错误

问题

  在这里插入图片描述

原因

  在这里插入图片描述
  由于使用了QT_NO_KEYWORDS宏定义,因此emit、signals、slots都不用使用了,如果想使用信号槽机制的话,必须用宏来代替,分别是Q_EMIT、Q_SIGNALS、Q_SLOTS。
   在这里插入图片描述

解决

  直接去掉,不然我们之前的模块将需要大面积更改。
  在这里插入图片描述
  修改后,没发现出现问题,也就这样解决了。


上一篇:没有了
下一篇:敬请期待…


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/128146985

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

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

相关文章

设计模式之观察者模式(十四)

目录 1. 背景 1.1 天气预报项目 2. 观察者模式 2.1 观察者模式解决天气预报项目 2.2 观察者模式在JDK中应用 1. 背景 1.1 天气预报项目 天气预报项目需求,具体要求如下&#xff1a; 气象站可以将每天测量到的温度&#xff0c;湿度&#xff0c;气压等等以公告的形式发布出去…

ASEMI整流桥KBL406参数,KBL406规格,KBL406封装

编辑-Z ASEMI整流桥KBL406参数&#xff1a; 型号&#xff1a;KBL406 最大重复峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;600V 最大RMS电桥输入电压&#xff08;VRMS&#xff09;&#xff1a;420V 最大直流阻断电压&#xff08;VDC&#xff09;&#xff1a;600…

完全免费、开源的Flutter架构来了;开发者做好准备了吗?

Flutter 是谷歌的移动 UI 框架&#xff0c;可以快速在 iOS 和 Android 上构建高质量的原生用户界面 一份代码可以同时生成 iOS 和 Android 两个高性能、高保真的应用程序 Flutter 目标就是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序&#xff0c;并且兼容 滚…

萤火虫模糊回归算法(Matlab代码实现)

&#x1f352;&#x1f352;&#x1f352;欢迎关注&#x1f308;&#x1f308;&#x1f308; &#x1f4dd;个人主页&#xff1a;我爱Matlab &#x1f44d;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff09;&#x1f33b;&#x1f33b;&#x1f33b; &#x1f34c;希…

FA-Phe-Gly-Gly,64967-39-1

Substrate for a continuous spectrophotometric assay of human angiotensin I-converting enzyme (ACE). Enzymatic cleavage of FAPGG yields FA-Phe-OH and H-Gly-Gly-OH. 连续分光光度法测定人血管紧张素i转换酶(ACE)的底物。酶法裂解FAPGG产生fa - pheo - oh和H-Gly-Gly-…

Kamiya丨Kamiya艾美捷抗-C-Myc,多克隆说明书

Kamiya艾美捷抗-C-Myc&#xff0c;多克隆化学性质&#xff1a; 程序&#xff1a;鸡用C-Myc免疫与KLH缀合的肽。多次之后用弗氏佐剂免疫收集。使用固定在固体上的肽对抗体进行免疫亲和纯化阶段 规范&#xff1a; ELISA&#xff1a;抗体特异性通过针对与BSA缀合的肽的ELISA。A…

在微信小程序里引入Vant Weapp组件库详细步骤

1. 新建一个文件夹。 2. 使用微信开发者工具 选择一个模板(这里以javaScript 基础模板 为例) 选择完模板之后如下&#xff1a; 2. 右键打开终端&#xff1a;按如下步骤执行命令。 ① npm init 解释&#xff1a;执行 npm init 需要在当前文件夹下的DOS窗口执行或者VS code里面…

Springboot策略模式实现文件上传功能(Windows/Linux本地,oss,cos)

1&#xff1a;首先配置pom依赖&#xff1a; <!-- 阿里云oss--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.0</version></dependency><!-- 腾讯云cos-->…

Raspberry Pi 3 Model B+ (树莓派3B+)快速上手

文章目录一、硬件资源二、供电三、引脚说明四、Raspberry Pi OS1. 下载imager2. 选择操作系统3. 选择SD卡4. 烧写完成5. 启动6. 版本信息五、网络测试1. WiFi2. 以太网六、开启串口日志1. 硬件串口连接2. 修改config.txt配置3. 修改cmdline4. 测试一、硬件资源 下面是硬件资源图…

架构-三层架构:三层架构

概述 顾名思义&#xff0c;三层架构分为三层&#xff0c;分别是“数据访问层”、“业务逻辑层”、“表示层”。 数据访问层&#xff1a;数据访问层在作业过程中访问数据系统中的文件&#xff0c; 实现对数据库中数据的读取保存操作。 表示层&#xff1a;主要功能是 显示数据和…

李宁「向上」:不止缺一个FILA

文|螳螂观察 作者|易不二 随着卡塔尔世界杯拉开战幕&#xff0c;今年年初大幅下跌的阿迪和耐克&#xff0c;正在借助世界杯大放异彩。 据统计&#xff0c;在2022年的32强世界杯球衣中&#xff0c;耐克、阿迪、彪马三家品牌共包揽了80%。世界杯球衣是出镜率最高的广告载体&am…

Android基础之Fragment

目录前言一、Fragment简介二、Fragment的基础使用1.创建Fragment2.在Activity中加入Fragment&#xff08;1&#xff09;在Activity的layout.xml布局文件中静态添加&#xff08;2&#xff09;在Activity的.java文件中动态添加三、Fragment的基础实践应用1.应用过程详解2.代码总览…

Java JDK下载与安装教程

文章目录Java JDK 简介下载 JDK安装 JDKJava JDK 简介 JDK是 Java 语言的软件开发工具包&#xff0c;主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心&#xff0c;它包含了JAVA的运行环境&#xff08;JVMJava系统类库&#xff09;和JAVA工具。 万事开…

Flink系列文档-(YY11)-watermark工作机制

1 WaterMark生成工作机制 观察源码 /*** A WatermarkGenerator for situations where records are out of order, but you can place an upper* bound on how far the events are out of order. An out-of-order bound B means that once an event* with timestamp T was encou…

[附源码]Python计算机毕业设计SSM酒店管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

alertmanager 基于webhook-adapter插件实现企业微信机器人提醒服务

前言 Alertmanager处理客户端应用程序&#xff08;例如 Prometheus 服务器&#xff09;发送的警报。它负责删除重复数据、分组并将它们路由到正确的接收器集成&#xff0c;例如电子邮件、PagerDuty 或 OpsGenie。它还负责警报的静音和抑制。 前提要求 安装docker&#xff0c;…

分布式搜索引擎 ElasticSearch(ES)

一、初识elasticsearch 1.了解ES 1&#xff09;elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容。elasticsearch结合kibana、Logstash、Beats&#xff0c;也就是elast…

基于SSH的周报管理系统

来公司的第一个实习项目&#xff0c;前端使用的是Freemark,刚开始上手比较复杂&#xff0c;慢慢摸索也算是圆满完成了&#xff0c;加油&#xff01;

LockSupport与线程中断

LockSupport与线程中断 线程中断机制 voidinterrupt()中断此线程static booleaninterrupted()获取当前线程中断标志位 true|falsebooleanisInterrupted()获取当前线程中断标志位true|false static boolean interrupted&#xff08;&#xff09;和boolean isInterrupted&#x…

【unity】安卓环境配置(踩坑整理)

一、基础环境配置 1、模块安装 可能报错&#xff1a;Currently selected scripting backend (IL2CPP) is notinstalled. 解决&#xff1a;部分项目依赖于IL2CPP&#xff0c;及WebGL组件&#xff0c;因此也需要勾上。 2、打开偏好设置 3、设置需要的VS版本 可能报错&#xf…