在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的原理框图如下:

相关推荐
rzl0224 分钟前
java web5(黑马)
java·开发语言·前端
jingling55537 分钟前
面试版-前端开发核心知识
开发语言·前端·javascript·vue.js·面试·前端框架
m0_687399841 小时前
写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
开发语言·c++·ffmpeg
爱上语文1 小时前
Redis基础(5):Redis的Java客户端
java·开发语言·数据库·redis·后端
A~taoker1 小时前
taoker的项目维护(ng服务器)
java·开发语言
萧曵 丶1 小时前
Rust 中的返回类型
开发语言·后端·rust
hi星尘2 小时前
深度解析:Java内部类与外部类的交互机制
java·开发语言·交互
看到我,请让我去学习2 小时前
Qt编程-qml操作(js,c++,canvas)
开发语言·qt
橘子编程2 小时前
Python-Word文档、PPT、PDF以及Pillow处理图像详解
开发语言·python
Ronin3052 小时前
【C++】类型转换
开发语言·c++