![193dc7c34f27291ebf440c9b7de39c78.gif](https://i-blog.csdnimg.cn/blog_migrate/1c338f25f011e597dda0e0ae85c0dfdb.gif)
一、前言
这个控件源自于一个音乐播放器,在写该音乐播放器的时候,需要将音频的数据转换成对应的频谱显示,采用的fmod第三方库来处理(fmod声音系统是为游戏开发者准备的革命性音频引擎,非常强大和牛逼),fmod负责拿到音频数据对应的采样频谱数据,然后传给这个控件进行绘制即可,本控件主需要专注于绘制即可,这样fmod对应封装的类专注于音频采集等处理,实现了隔离,修改和增加功能比较方便,声音波形图控件除了可以设置采样的深度以外,还支持三种数据样式展示,线条样式、柱状样式、平滑样式。为了可以直接定位到某一位置直接跳转到音频位置,还增加了绘制数线条定位线。
二、实现的功能
- 1:可设置采样深度
- 2:可设置当前位置线条宽度/线条颜色
- 3:可设置前景色/背景色
- 4:可设置数据展示样式,线条样式/柱状样式/平滑样式
三、效果图
![5c3ae454c626c3e39db5788cb2044a7c.gif](https://i-blog.csdnimg.cn/blog_migrate/e6dd198998d3923f66e102b57f55ac56.gif)
![794a731bc837a1b1846131803a6249cc.gif](https://i-blog.csdnimg.cn/blog_migrate/5020061ffa4223b3e86bf6e5b336d303.gif)
四、头文件代码
#ifndef WAVEDATA_H
#define WAVEDATA_H
/**
* 音量采样值波形控件 作者:feiyangqingyun(QQ:517216493) 2017-9-10
* 1:可设置采样深度
* 2:可设置当前位置线条宽度/线条颜色
* 3:可设置前景色/背景色
* 4:可设置数据展示样式,线条样式/柱状样式/平滑样式
*/
#include <QWidget>
#ifdef quc
#if (QT_VERSION < QT_VERSION_CHECK(5,7,0))
#include <QtDesigner/QDesignerExportWidget>
#else
#include <QtUiPlugin/QDesignerExportWidget>
#endif
class QDESIGNER_WIDGET_EXPORT WaveData : public QWidget
#else
class WaveData : public QWidget
#endif
{
Q_OBJECT
Q_ENUMS(WaveSt