Qt6 + QCustomPlot 实时曲线 Demo ,适合串口与上位机项目

最近整理了一个基于 Qt6 + QCustomPlot 的实时曲线显示 Demo,主要用于演示上位机软件中常见的实时数据展示、曲线交互和数据接收功能。

项目采用 Qt6 + CMake + VS2022 开发,代码结构清晰,适合作为学习参考或直接进行二次开发。

已实现功能

目前支持:

  • 鼠标拖拽平移曲线
  • 鼠标滚轮缩放视图
  • X/Y、仅X、仅Y三种轴向模式
  • 曲线、坐标轴、图例、数据点选择
  • 拖拽采样点实时修改数据
  • 模拟实时接收数据
  • 自定义接收间隔
  • 折线、平滑曲线、柔和平滑三种绘制方式
  • PNG图片导出

模拟实时数据接收

Demo内置数据模拟功能,会持续产生新的随机采样值并追加到曲线末尾,用于模拟真实设备的数据流。

例如:

  • 串口设备
  • TCP通信
  • 数据采集卡
  • PLC设备
  • 传感器数据

后续如果需要接入真实设备,只需将随机数据部分替换为实际接收到的数据即可。


平滑曲线效果

很多实时曲线直接使用折线连接,转折位置会比较生硬。

因此Demo增加了平滑曲线绘制功能:

  • 红色点表示真实采样数据
  • 蓝色线表示插值后的平滑曲线

这样既保留原始数据,又能获得更好的显示效果。


适合哪些项目?

这个Demo比较适合:

  • Qt学习
  • QCustomPlot研究
  • 串口工具开发
  • 上位机软件开发
  • 数据采集系统
  • 设备监控软件
  • 工业控制项目

如果你正在做实时曲线显示相关功能,可以直接在此基础上扩展串口、TCP、数据库等模块。


源码获取

需要源码的朋友,

评论区回复:

源码

后续统一发送获取方式。

也欢迎交流:


相关推荐
xcyxiner7 小时前
DicomViewer24 修复编译bug(window test 失败)
前端·qt
sycmancia13 小时前
Qml——Rectangle元素
qt
sycmancia16 小时前
Qml——Item元素
qt
励志不掉头发的内向程序员17 小时前
【从零写一个CAD 04】中键拖动平移:抓住一个点,让它一直待在鼠标底下
开发语言·c++·qt·学习·系统架构·计算机外设
zhanghaha13141 天前
Qt 中的类是什么?保姆级详解(新手版)
qt
看看我呀看看我1 天前
基于Qt的虚拟键盘
c++·qt·qt5·qt6.3
kaixin_learn_qt_ing1 天前
Qt抽屉窗体实现demo
开发语言·qt
huanbailu2 天前
Qt 跨线程信号槽:connect 返回 true 但槽函数不执行的坑
开发语言·c++·qt·信号槽·跨线程·元类型
Quz2 天前
QML SplitView:可拖拽分隔面板与自定义 Handle
qt
Quz2 天前
QML SplitView 进阶:嵌套布局与状态持久化
qt