Qwt开发笔记(一):Qwt简介、下载以及基础demo工程模板
创始人
2024-03-12 18:14:02
0

若该文为原创文章,转载请注明原文出处
本文章博客地址: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 vectorX;QVector 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

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...