基于 Qt6 Widgets 框架开发的本地音乐播放器桌面应用,界面风格仿照 QQ 音乐客户端。
| 技术 | 用途 |
|---|---|
| C++17 | 核心语言 |
| Qt6 Widgets | UI 框架 |
| QMediaPlayer | 音频播放引擎 |
| SQLite (Qt SQL) | 本地数据持久化 |
| QPropertyAnimation | 动画效果 |
| QSharedMemory | 单实例防重复启动 |
- 🎵 多格式支持:MP3 / FLAC / M4A / WAV
- 📋 播放列表管理:本地音乐 / 我喜欢 / 最近播放 三大列表
- 🔀 播放模式切换:列表循环 / 单曲循环 / 随机播放
- 📝 LRC 歌词同步:解析 LRC 文件,歌词跟随播放进度实时高亮滚动
- 💾 数据持久化:SQLite 存储歌曲信息、喜欢状态、播放历史,重启后自动恢复
- 🔔 系统托盘:关闭窗口最小化到托盘,支持托盘菜单还原/退出
- 🪟 无边框窗口:自定义标题栏,支持鼠标拖动
- 🔒 单实例保护:
QSharedMemory防止程序重复启动
QMediaPlayer::setSource() 是异步操作,使用 QEventLoop + QTimer 超时保护机制将异步信号转为同步等待,在歌曲对象构造阶段即时获取歌名、歌手、专辑等元数据,元数据缺失时自动从文件名按 歌手-歌名 规则解析 fallback 信息。
手写 LRC 解析器提取时间戳与歌词文本,构建有序时间线列表。播放中以"中心行 ± 3 行"滚动窗口渲染当前歌词,配合 QPropertyAnimation 实现歌词页面弹出/收起动画。
封装 BtForm 自定义控件,使用四根 QPropertyAnimation 以不同周期(1500ms / 1800ms / 2100ms / 2400ms)驱动竖线循环伸缩动画,模拟音乐律动视觉效果。
- Qt 6.x
- CMake 或 qmake(本项目使用 qmake,对应
MusicClient.pro) - C++17 编译器(MSVC 2019+ 或 MinGW)
# 用 Qt Creator 打开 MusicClient.pro 直接构建
# 或命令行:
qmake MusicClient.pro
makeMusicClient/
├── *.h / *.cpp # 源文件
├── *.ui # Qt Designer 界面文件
├── images/ # 图标与图片资源
├── *.qrc # Qt 资源文件
└── MusicClient.pro # qmake 工程文件
本项目仅用于个人学习与技术展示,不用于商业目的。