- 下载歌曲
- 播放本地歌曲
- 显示歌词
- 上一曲
- 下一曲
- 播放/暂停
- 调整音量
- 拖拽进度条调整播放进度,歌词同步更新进度
- 随机播放、单曲循环、循环播放
- 最小化托盘
- 去除边框
- 鼠标拖拽可移动窗口位置
- 拖入本地音乐文件到窗口中,即可添加到本地列表
-
SQLite3
数据库 -
QThread
多线程 - 正则表达式匹配歌词时间
- QSS设计界面样式
- 自定义组件,继承自
QListWidget
,实现歌曲列表 - 重写鼠标按下事件、移动事件、释放事件、绘图事件
- 重写
dragEnterEvent
和dropEvent
事件,实现拖放效果 - 单例模式
- RAII
解决方法:
在主类中实例化需要放在新的线程中执行的类时,传递一个父对象即可,例如:
m_jsonDownloader = new KDownloader(this);
m_musicDownloader = new KDownloader(this);
m_lyricDownloader = new KDownloader(this);
m_imgDownloader = new KDownloader(this);
m_musicPlayDownload = new KDownloader(this);
问题原因:传递路径的时候,不能使用QString类型的路径,需要使用QUrl::fromLocalFile转换一下为下面的格式
QUrl("file:///C:/Users/kantl/Desktop/陈奕迅-孤勇者.mp3")
感谢 jintianjuedingjintian 开发的 Qt5-MusicPlayer 项目,本项目基于此项目二次开发,特此鸣谢!
如有侵权请通过邮件与我联系,会及时处理。