在QT中,利用charts库绘制FFT图形

第1章 添加charts库

1.1 .pro工程添加chart库

1.1.1 在.pro工程里面添加charts库

1.1.2 在需要使用的地方添加这两个库函数,顺序一点不要搞错,先添加.pro,否则编译器会找不到这两个.h文件。

第2章 Charts关键绘图函数

2.1 QChart 类

QChart 是绘制图表的核心类,它包含了多个数据序列。对于FFT图管理和展示FFT的频域数据。

1 addSeries(QAbstractSeries *series):

在绘制FFT图时,我们将QLineSeries对象(包含FFT结果)添加到QChart中进行显示.

2 :setTitle(const QString &title)

设置图表的标题,通常可以设置为"FFT Frequency Spectrum"

3: createDefaultAxes()

自动为图表创建默认坐标轴。对于FFT图,需要确保X轴代表频率,Y轴代表幅度,createDefaultAxes()可以帮助设置这些默认轴。

2.2 QValueAxis 类

QValueAxis 是Qt中用于处理数值型坐标轴的类。对于FFT图,X轴通常表示频率,Y轴表示幅度。使用QValueAxis可以精确控制这些坐标轴的范围、标签等

2.2.1 主要函数

1:setRange(min, max)

设置坐标轴的显示范围。在绘制FFT图时,X轴的范围应当根据采样率设置,Y轴的范围则可以根据FFT结果的最大值设置。

2:setLabelFormat(QString format)

设置坐标轴标签的显示格式。对于FFT图,我们可以设置X轴为频率标签(例如每个频点的频率值),Y轴为幅度值(例如每个频点的幅度)

3:setTickCount(int count)

用来设置坐标轴上刻度的数量。这对于展示FFT图时,帮助用户清晰地查看频率和幅度的变化

2.3 QChartView 类

1:setRenderHint 该函数用于设置 QChartView 的图像渲染方式 在绘制折线图(如 FFT 频谱)时,可以显著提升视觉效果

2:QChartView

函数用于设置图表的"橡皮筋"模式(rubber band),即用户可以通过鼠标在图表区域拖出一个矩形选择框,从而放大查看选中区域的数据点。它非常适合查看频谱中某个频率段的细节

模式

QChartView::NoRubberBand:禁用区域选择(默认)

QChartView::RectangleRubberBand:启用矩形区域选择

QChartView::HorizontalRubberBand:只在水平方向启用选择(适合频率缩放)

QChartView::VerticalRubberBand:只在垂直方向启用选择(适合幅度缩放)

3: setInteractive

函数用于启用或禁用图表的交互功能 如果设置为 true,图表将响应鼠标操作,如滚轮缩放、点击拖动等行为

放构造函数里面

2.4 QVector<QPointF>类

在绘制 FFT 频谱时,通常需要处理大量频率点,逐个调用 append(x, y) 效率较低,因此可以借助 QVector<QPointF> 一次性添加所有点

上位机的软件可以通过网络与VPX-404信号处理模块互联,实现FFT显示功能。VPX-404的原理框图如下:

相关推荐
2601_962885721 小时前
如何用 Python 把 K 线重采样成任意周期?
开发语言·python
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结
java·开发语言·交友
下一站春风里3 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
天外飞雨道沧桑4 小时前
我在浏览器里练了一个 792 参数的大模型,它学会了补全 JavaScript
开发语言·javascript·ai·ecmascript·ai编程
hhhjhl4 小时前
Yup 跨端三方库仓颉适配全流程
java·开发语言
运维行者_4 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
“AI国潮设计-小江”5 小时前
【AIGC实战】Python+SDXL打造“潮汕英歌舞IP”万能立牌插件,批量生成“发财元宝蛋糕”视觉营销方案(附源码)
开发语言·人工智能·python·prompt·aigc
lhbweilai5 小时前
分析FreeRTOS内核对象API的源码实现(八)
c语言·开发语言·stm32·单片机
努力努力再努力wz5 小时前
【C++高阶系列】C++20 协程底层原理:函数为什么能暂停?从状态机到 Task,彻底串起挂起、恢复与协程调度
开发语言·c++·c++20·1024程序员节
咩咩啃树皮5 小时前
JavaScript 中 this 指向为什么总在变?
开发语言·前端·javascript