Qt实时波形绘图(使用QCustomPlot)

这篇具有很好参考价值的文章主要介绍了Qt实时波形绘图(使用QCustomPlot)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、Qt是什么?

二、QCustomPlot是什么?

三、Qt实时波形绘图

        3.1 开发环境和工具

        3.2 实时波形绘图控件

3.2.1 界面设计及功能

3.2.2 如何使用该控件

总结


前言

        我们在涉及或调试设备时,通常需要查看过程数据,以便了解设备的运行情况。我们可以把原始数据通过某种接口打印到电脑或其它载体上进行查看,但这样不直观,或需要更进一步的处理才能发现规律。如果我们能够将获取的数据以实时波形的形式显示在眼前,则对设备的各项运行情况一目了然,所以有经验的研发人员往往会自己做出一套用于调试的上位机,能够直观地显示各种数据、波形,进而做出分析。

         对于初学者而言,想要及时地做出一套上位机或实时波形显示界面,还是存在一定难度的,为了降低初学者的学习难度,亦方便其他研发人员的使用,我分享一套使用简单、功能强大的实时波形绘制控件,其基于Qt5与QCustomPlot实现。


一、Qt是什么?

        Qt是当下最流行的C++开发库,也是当下最流行的跨平台开发框架之一,可开发桌面端应用、移动端应用以及嵌入式端应用,可以说能支持的系统基本都支持,它可以做GUI但功能远不止GUI。我们用的最多的还是桌面端和嵌入式端的应用,移动端应用流行度不高。

        Qt涉及一整套开发流程,具有专业的全流程开发工具,如Qt Creator IDE、Qt Designer、Qt Design Studio,使用Qt可以快速高效地开发出自己想要的界面应用或控制台程序,满足研究、学习、生产需要。

        Qt官网:Qt | Cross-platform Software Design and Development Tools

二、QCustomPlot是什么?

        QCustomPlot是一个用于绘图和数据可视化的 Qt C++ 小部件。它不需要过多的依赖并且有详细的教程。QCustomPlot做出的图形或图表不仅美观,而且高性能,具有比任何其它绘图控件都要高的实时性。QCustomPlot 可以导出各种格式,如矢量化 PDF 文件和图像,如 PNG、JPG 和 BMP。

        经过本人实测,QCustomPlot绘制的波形或图表比Qt官方自带的绘图控件QChart性能要高,尤其是在具有大数据量高实时性的场合。

         QCustomPlot官网:Qt Plotting Widget QCustomPlot - Introduction,其官网实例如下,仅展示部分图片:

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

 三、Qt实时波形绘图

3.1 开发环境和工具

       我所使用的开发环境如下:

        Qt 5.14.2(包含对应的Qt Creator);Qt5的其它版本理论上都支持;

        QCustomPlot 2.1.0;

        适用于Qt所支持的所有桌面平台。

3.2 实时波形绘图控件

3.2.1 界面设计及功能

        我用定时器生成了三条波形,分别是正弦波、矩形波和随机数,勾选右边的波形名称的勾选框可显示或隐藏波形曲线。点击波形名称后面的颜色按钮,可以任意更换波形颜色。功能展示如下:

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

Qt实时波形绘图(使用QCustomPlot)

        总结一下,功能如下:

        ① 自适应量程:根据数据的大小自动改变绘图坐标量程,使曲线的纵坐标全部显示在绘图区域;

        ② 全程:将曲线的横坐标和纵坐标全部显示在绘图区域;

        ③ 显示子网格:显示绘图区域的子网格;

        ④ 时间轴:设置绘图区域的时间轴大小,如设置10s,则绘图区域只显示出10s内的波形;

        ⑤ 清除:清除全部波形及数据;

        ⑥ 整图:当绘图暂停或停止接收数据时,点击该按钮,绘图区域显示波形的全部曲线;

        ⑦ 保存:将可视的绘图区域保存成png格式图片;

        ⑧ 暂停(开始):暂停或开始波形绘制。

        在不勾选“自适应量程”和“全程”的情况下,鼠标可以对波形进行操作:鼠标滚轮缩放曲线大小,鼠标左键移动波形。

3.2.2 如何使用该控件

        该控件的源码我已经上传到CSDN上,地址:https://download.csdn.net/download/weixin_47488212/87606349

        源码中有个名为WidgetPlot2D的UI类,对应三个文件为widgetplot2d.cpp、widgetplot2d.h、widgetplot2d.ui,当然,在项目中必须包含QCustomPlot相关文件,我这里是直接包含qcustomplot.cpp、qcustomplot.h两个文件。另外在项目的.pro中,必须包含以下这句:

        QT += widgets printsupport

        可以使用代码直接实例化WidgetPlot2D,或通过窗口提升,然后使用WidgetPlot2D绘制实时波形只需两步:

        ① 初始化波形名称:函数initGraphName(QStringList)

        ② 给对应的波形添加数据:函数addData(QString, double)

        注意:波形名称和数据要一一对应,函数addData为公有槽函数,也可使用信号槽传递波形数据。

        其它更具体的操作可以查看源码,,喜欢的就给个赞吧!


总结

        本文简单介绍了Qt和QCustomPlot ,然后介绍了实时波形绘图控件,并给出了使用方法。文章来源地址https://www.toymoban.com/news/detail-474650.html

到了这里,关于Qt实时波形绘图(使用QCustomPlot)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Git入门实践教程》前言+目录

    版本控制系统(VCS)在项目开发中异常重要,但和在校大学生的交流中知道,这个重要方向并未受到重视。具备这一技能,既是项目开发能力的体现,也可为各种面试加码。在学习体验后知道,Git多样化平台、多种操作方式、丰富的资源为业内人士提供了方便的同时,也造成

    2024年02月10日
    浏览(66)
  • Qt QCustomPlot 绘制子轴

    抄大神杰作: QCustomplot(五)QCPAxisRect进行子绘图-CSDN博客 文章浏览阅读5.9k次,点赞7次,收藏60次。文中介绍了QCustomPlot 子绘图需要掌握的类,也就是Matlab中的subplot,最后给出了一个完整的例子。_qcpaxisrect https://blog.csdn.net/weixin_39258979/article/details/122008568 需求来源:试验数据

    2024年01月20日
    浏览(34)
  • FPGA学习实践之旅——前言及目录

    很早就有在博客中记录技术细节,分享一些自己体会的想法,拖着拖着也就到了现在。毕业至今已经半年有余,随着项目越来越深入,感觉可以慢慢进行总结工作了。趁着2024伊始,就先开个头吧,这篇博客暂时作为汇总篇,记录在这几个月以及之后从FPGA初学者到也算有一定

    2024年02月03日
    浏览(55)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

            绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线 图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关

    2024年02月12日
    浏览(46)
  • Qt开发1--QCustomPlot的第一个示例

    本文记录了在Linux上使用QCustomPlot进行一个基本绘制所需的完整过程,包括如何使用qtcreator,编辑ui以及编写相应的C++代码。以下是详细步骤: 1、使用qtcreator启动开发环境: 启动后,显示以下一个操作界面:  2、通过菜单栏File-New File or Project启动项目新建向导: 3、选择App

    2024年02月11日
    浏览(40)
  • STM32F4 HAL库使用DMA进行ADC采样实时发送波形到串口显示(包含傅里叶变换)

    按下 STM32F4 的 KEY0 按键,通过外部中断的方式对按键进行检测,然后进行一次固定点数的 DMA ADC 采集,采集完成后在 DMA 的中断发送采集到的数据,然后清空数据区准备下一次的按键中断。电脑接受到串口数据后对数据进行简单处理和傅里叶变化,然后实时显示在电脑上。 开

    2024年02月14日
    浏览(40)
  • Qt应用开发(拓展篇)——示波器/图表 QCustomPlot

             QCustomPlot 是一个用于绘图和数据可视化的Qt C++小部件。它没有进一步的依赖关系,提供友好的文档帮助。这个绘图库专注于制作好看的,出版质量的2D绘图,图形和图表,以及为实时可视化应用程序提供高性能。         QCustomPlot可以导出各种格式,如矢量化

    2024年02月11日
    浏览(39)
  • 【Qt】QCustomPlot组件跟随鼠标显示xy轴坐标位置

    目录 一、 问题描述 二、 解决方案 三、代码实现 一、 问题描述 如题所述。 二、 解决方案 自定义一个继承QCustomPlot类的实现类,重写mouseMove虚函数实现,从而获取鼠标位置,然后计算出点的坐标值,再利用QToolTip显示点坐标。 三、代码实现 继承自QCustomPlot组件的MFMCustomPl

    2024年02月11日
    浏览(46)
  • 【Qt】四种绘图设备详细使用

    绘图设备是指继承QPainterDevice的子类—QPixmap QImage QPicture QBitmap(黑白图片) QBitmap ——父类QPixmap QPixmap图片类,主要用来显示,它针对于显示器显示做了特殊优化, 依赖于平台 的, 只能在主线程中使用 (UI线程)如果要在界面显示图片 ,优先选择QPixmap类,只能在主线程 - QImage图片

    2024年03月13日
    浏览(32)
  • web前端实时音频播放并绘制波形

    最新项目需要用到拉取实时声音流数据播放声音以及显示对应的波形图。如果是声音文件我们可以用 wavesurfer.js这个框架很轻松的绘制波形,但是实时声音怎么转换呢,以下是我的解决方案 后端需要将数据转换成PCM格式 我们用到下面2个库: 1.pcm-player (播放声音) 2.recorder

    2024年02月11日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包