一::音乐播放器整体架构
二::可以实现的功能
一::音乐播放器整体架构
本项目主要框架由1个playlist音乐列表,1个播放器player,4个list列表组成;
总歌曲序列号数组>>获取所有歌曲序列号加入总的歌曲序列号数组
总歌曲名容器>>获取所有歌曲相对应的歌曲名
总歌曲序列号数组与总歌曲名容器对于用户端是不可见的
其中每个列表包含5个容器1个数组组成;
1个列表容器用来保存歌曲的序列号,1个歌曲序列号数组来保存列表的行号,
这样点击列表所获取的序列号就是所要播放歌曲的序列号,同理通过当前播放的歌曲序列号就可以获取它在各个列表中的列表行号;
2个ID容器一个用于保存列表行号id,一个用于保存item信号id值
后期我们要实现列表是可以拖动的(最近播放,搜索的结果是不能拖动的也就不需要这两个容器啦),而我们列表行号是对应着歌曲序列号的每次拖动需要时时修改比较麻烦,最主要的还是每一个item上面都有两个按钮,收藏与(暂停and开始),每个按钮按下所返回的信号值就是创建该item所在的行号,因此我们需要两个id容器让列表行号与item的信号值产生映射关系;(列表拖动理论实现了,代码还没有写)
1个随机容器,此容器保存当前列表上一首的随机音乐的地址
只要当前列表开启了随机模式,就把当前播放的歌曲序列号传给当前列表的随机容器,以备用户点击上一首,一旦切换列表,所有列表随机容器初始化;
二::可以实现的功能
上一首,下一首(随机播放也可以回溯到随机的上一首),暂停开始,调节音量,
Label实现滚动字幕(Label自定义控件);
实现切换至小窗口播放;(小窗口实现上一首,下一首,暂停开始,歌名显示,加入撤销统一收藏)
实现动态静态壁纸;
实现歌曲进度条所点即所得;(自定义进度条控件)
实现每个列表都有自己的播放模式;(统一所有列表的播放模式)
实现搜索歌曲;(仅限列表内已有歌曲)
双击列表item播放歌曲(item上面的控件是自定义控件)
当前播放音乐自动加入最近播放;
加入,撤销我的收藏并统一显示所有列表的收藏图标;
音乐播放暂停时统一所有拥有该歌曲列表的播放图标显示等
下面图片是成品展示
音乐列表,收藏列表,最近播放
代码已上传git链接
总结::
这一篇只是记录分享一下自己写的一个qt项目.感谢大家的观看,如有问题可以留言.