【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

这篇具有很好参考价值的文章主要介绍了【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。

战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。

战略目标:干掉它。

战术路线:Qt 绘图可以使用 Qt Charts,先了解一些关于 Qt Charts 的基础知识,然后根据自己的实时动态曲线需求,将它融合到我的工程中。

1. 实现一个最简单的折线图

先上效果,再来解释。操作步骤和效果如下图:

文件 GUI.h

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.cpp

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

最终运行效果:
【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面


可能 Bug:C1083

参考这个文章解决就行了:【Visual Studio】报错 C1083,使用 C++ 语言,配合 Qt 开发串口通信界面。


背后蕴藏的知识

Qt 提供的相关的 class 类有:

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

算了下,一共有 48 个类,实现一个图表并不需要全部用到,根据所需实现的图表,只需用到当中的几个就行,这些类,大致上可以分为如下几类:

  • QChartView Class: 一个用来显示图表的区域,或者理解为画布,可以在QChartView上实现所有Qt Chart支持的图表。

QChartView -> QGraphicsView -> QAbstractScrollArea -> QFrame -> QWidget

  • QChart Class:QChart 是 QGraphicsWidget,可以在 QGraphicsScene 上显示,用来管理图表中的数据、图例、坐标轴等,

QChart -> QGraphicsWidget -> QGraphicsObject and QGraphicsLayoutItem QGraphicsObject <-- QObject and QGraphicsItem

  • QLineSeries Class 这个是图表的类型,其他的还有 QSplineSeriesQAreaSeriesQScatterSeries 等。

2. 配置一下 chart 图表的显示区域

上述步骤做出来的表格,其显示位置是显示在了整个界面框中,把其他内容都给覆盖掉了,这是肯定不行的。

接下来我就将从网上对比后,觉得不错的方式记录下来。最终效果就是将图表限制到一定区域内。效果如下图所示。

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.ui

这里我使用的是添加一个 Widget 的方法。

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.cpp

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面


可能 Bug:C2653

参考这个文章解决就行了:【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面。


3. 添加 XY 轴并修改显示范围

实现动态曲线之前,我们先要具备能修改坐标轴显示范围的功能。否则,当数据传输越来越多,而坐标轴的显示范围没有及时发生更改,那么数据就没有办法正常显示出来。

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.h

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.cpp

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

4. 使用系统当前时间作为 X 轴坐标

文件 GUI.ui

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.h

这里使用 qdatetimeaxis.h 来完成。

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

文件 GUI.cpp

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

5. 动态曲线

动态曲线,顾名思义,就是让曲线动起来。其实经过了以上的这几步,接下来只需要两句话就能让程序动起来了。

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

我是将这两句写到了我的串口接收程序中了,也就是接到数据,就进行图表的更新。大家可以根据自己的需求,放到合适的位置,让他的更新机制更符合自己的项目需求。

最后,放一张此小项目的最终效果图。再往下,就涉及到一些实验室保密数据了,因此,就不方便再继续展示了。

【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面文章来源地址https://www.toymoban.com/news/detail-500504.html

Ref.

  1. 一、Qt Charts
  2. QtCharts编程笔记:VS2019+Qt Charts 5.15.1环境配置
  3. Qt GUI开发(一)—— Qt Chart的简单使用
  4. QChart双Y轴实时更新曲线图(横坐标为当前时间)
  5. QChart绘制占比图,但是以时间轴为X轴

到了这里,关于【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Visual Studio部署matplotlib绘图库的C++版本

      本文介绍在 Visual Studio 软件中配置、编译 C++ 环境下 matplotlibcpp 库的详细方法。    matplotlibcpp 库是一个 C++ 环境下的绘图工具,其通过调用 Python 接口,实现在 C++ 代码中通过 matplotlib 库的命令绘制各类图像。由于其需要调用 Python 接口,因此在配置 matplotlibcpp 库时有些

    2024年02月19日
    浏览(33)
  • C++绘图库matplotlibcpp在Visual Studio中的配置方法

      本文介绍在 Visual Studio 软件中配置、编译 C++ 环境下 matplotlibcpp 库的详细方法。    matplotlibcpp 库是一个 C++ 环境下的绘图工具,其通过调用 Python 接口,实现在 C++ 代码中通过 matplotlib 库的命令绘制各类图像。由于其需要调用 Python 接口,因此在配置 matplotlibcpp 库时有些

    2023年04月11日
    浏览(37)
  • Qt实时波形绘图(使用QCustomPlot)

    目录 前言 一、Qt是什么? 二、QCustomPlot是什么? 三、Qt实时波形绘图         3.1 开发环境和工具         3.2 实时波形绘图控件 3.2.1 界面设计及功能 3.2.2 如何使用该控件 总结         我们在涉及或调试设备时,通常需要查看过程数据,以便了解设备的运行情况

    2024年02月08日
    浏览(38)
  • Visual Studio如何使用Qt开发桌面软件?

      笔者熟悉的第一门编程语言是C#,当初本科毕业设计需要进行Qgis的二次开发,本想利用C#编程,但网上资料较少,多是利用Qt进行Qgis的二次开发,Qt是利用C++编程,当时利用Qt编译器进行编程,相比Visual Studio还是多有不习惯,虽然知道VS有Qt插件可以使用,但当初嫌麻烦,

    2024年02月13日
    浏览(52)
  • Qt Charts - 实时曲线

    按照之前的一篇文章,先在工程中添加QChart、QChartView,代码如下: 然后定义两个坐标轴,一个用作X轴,一个用作Y轴, 添加头文件: 创建两个QValueAxis: 在构造函数中,对两个坐标轴进行实例化,把X轴范围设置为0-10并放置在坐标系的底部,Y轴范围设置为0-10并放置在坐标系的

    2024年02月06日
    浏览(49)
  • Qt(C++)使用QChart动态显示3个设备的温度变化曲线

    Qt的QChart是一个用于绘制图表和可视化数据的类。提供了一个灵活的、可扩展的、跨平台的图表绘制解决方案,可以用于各种应用程序,如数据分析、科学计算、金融交易等。 QChart支持多种类型的图表,包括折线图、散点图、柱状图、饼图等。它还支持多个数据系列(datase

    2024年02月08日
    浏览(48)
  • 【VTK】读取一个 STL 文件,并使用 Qt 显示出来,在 Windows 上使用 Visual Studio 配合 Qt 构建 VTK

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 直接先把效果放出来,有需要就往下看。 骷髅3D打印3D模型

    2024年02月14日
    浏览(69)
  • <c++开发> Visual Studio使用开发-相关问题杂录

    <c++开发> Visual Studio使用开发-相关问题杂录 问题1:使用Visual Studio2022 运行Visual Studio2019的工程发生 error MSB8020 前景:使用Visual Studio2022 运行Visual Studio2019的工程; 错误如下: G:WorkSoftVS2022MSBuildMicrosoftVCv170Microsoft.CppBuild.targets(442,5): error MSB8020: 无法找到 Visual Studio 2019 的

    2024年02月08日
    浏览(53)
  • 使用 Visual Studio 2022 开发 Linux C++ 应用程序

    前置条件: Windows上需要先安装 WSL2,方法见: Install WSL | Microsoft Docs 在 WSL2 中依次执行如下命令,进行安装如下必需软件: Visual Studio 2022 引入了用于 Linux C++ 开发的本机 WSL2 工具集,可以构建和调试 Linux C++ 代码,并提供了非常好的 Linux 文件系统性能、GUI 支持和完整的系统

    2024年02月05日
    浏览(118)
  • Microsoft Visual Studio C++开发环境的配置及使用

    本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者\\\"海洋饼干叔 叔\\\";本文不允许以纸质及电子出版为目的进行抄摘或改编。 1.《Python编程基础及应用》,陈波,刘慧君,高等教育出版社。免费授课视频 Python编程基础及应

    2024年02月04日
    浏览(78)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包