Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

仿网易云音乐播放器(C++/Qt)

项目简介

这是一个基于 Qt/QML 技术栈开发的桌面音乐播放器应用,界面设计借鉴网易云音乐的现代化风格。项目采用 C++ 作为后端逻辑语言,结合 Qt Framework 实现核心功能,MySQL 作为数据存储方案,构建了一个完整的音乐播放生态系统。

核心技术实现

  • 前端架构:采用 QML 和 Qt Quick Controls 2 构建响应式用户界面,实现流畅的动画效果和直观的用户体验
  • 后端服务:基于 C++ 和 Qt Network 模块封装 RESTful API,处理用户认证、音乐数据检索和播放列表管理
  • 数据库设计:设计并实现规范化的关系型数据库模型,包含用户、歌手、专辑、歌曲等 8 个核心数据表,支持高效的音乐数据存储与查询
  • 多媒体处理:集成 Qt Multimedia 模块,实现高质量音频解码、播放控制和实时进度同步

主要设计亮点

  • 模块化架构:通过 Qt 的信号槽机制实现组件间解耦,提高代码可维护性和扩展性
  • 性能优化:采用异步网络请求和数据库连接池技术,显著提升应用响应速度和并发处理能力
  • 用户体验优化:实现智能缓存机制,减少重复网络请求;设计直观的播放控制和个性化推荐功能
  • 跨平台兼容:基于 Qt 框架的跨平台特性,支持 Windows、macOS 和 Linux 系统部署

功能完整性

涵盖从用户注册登录、音乐搜索、在线播放到本地音乐管理的完整业务流程,支持播放列表、收藏夹、播放历史等个性化功能,满足现代音乐播放器的核心需求。

主要特性

  • 用户认证系统:完整的用户注册、登录和会话管理功能
  • 音乐播放控制:支持播放、暂停、停止、上一首、下一首等基本播放控制
  • 进度管理:实时显示和控制音乐播放进度
  • 在线音乐搜索:通过网络请求获取在线歌曲和推荐歌单
  • 个性化推荐:根据用户喜好推荐相关音乐内容
  • 播放列表管理:创建、编辑和管理个人播放列表
  • 收藏功能:支持用户收藏喜欢的歌曲和专辑
  • 播放历史记录:自动记录用户的播放历史
  • 系统设置:提供音量控制、主题切换等个性化设置选项

技术栈

  • 前端界面:QML + Qt Quick Controls 2
  • 后端逻辑:C++ with Qt Framework
  • 数据库:MySQL 8.0+
  • 网络通信:Qt Network 模块 (TCP/HTTP)
  • 音频处理:Qt Multimedia 模块
  • 开发环境:Qt Creator / Visual Studio with Qt Plugin
  • 构建系统:CMake / QMake
  • 版本控制:Git

安装与设置

环境要求

  • Qt 5.15 或更高版本
  • C++ 编译器 (MSVC 2019+/GCC 7+/Clang 6+)
  • MySQL 8.0 或更高版本
  • CMake 3.16 或更高版本

克隆项目

git clone https://github.com/torbys/qml_music.git
cd qml_music

数据库配置

  1. 创建 MySQL 数据库:

    CREATE DATABASE music_player CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 执行数据库脚本初始化表结构(参考 backend.md)

  3. 修改数据库连接配置文件,设置正确的数据库连接参数

构建项目

使用 CMake

mkdir build
cd build
cmake ..
make

使用 QMake

qmake ../qml_music.pro
make

运行应用

./qml_music

项目结构

qml_music/
├── CPP/                    # C++ 后端代码
│   ├── auth_handler.cpp    # 用户认证处理
│   ├── auth_handler.h      # 用户认证头文件
│   ├── database.cpp        # 数据库操作实现
│   ├── database.h          # 数据库操作头文件
│   ├── main.cpp            # 程序入口点
│   ├── playlist_handler.cpp # 播放列表处理
│   ├── playlist_handler.h   # 播放列表处理头文件
│   ├── server.cpp          # 服务器相关实现
│   ├── server.h            # 服务器相关头文件
│   ├── song_handler.cpp    # 歌曲处理实现
│   ├── song_handler.h      # 歌曲处理头文件
│   └── backend.md          # 后端数据库设计文档
├── src/                    # QML 前端代码
│   ├── Config/             # 配置文件
│   │   └── Configuration.qml # 全局配置和信号定义
│   ├── LeftPage/           # 左侧导航页面
│   │   └── LeftPage.qml    # 左侧导航主文件
│   ├── PlayMusic/          # 音乐播放控制
│   │   └── PlayMusic.qml   # 播放器主界面
│   ├── RightPage/          # 右侧主要内容页面
│   │   ├── TopTitle.qml    # 顶部标题栏
│   │   ├── RightPage.qml   # 右侧页面容器
│   │   └── StackPage/      # 各个功能子页面
│   │       ├── Like.qml    # 我喜欢的音乐
│   │       ├── Recent.qml  # 最近播放
│   │       ├── LocalMusic.qml # 本地音乐
│   │       ├── CloudMusic.qml # 云端音乐
│   │       ├── Community.qml  # 社区
│   │       ├── DownloadManager.qml # 下载管理
│   │       ├── Setting.qml     # 设置页面
│   │       ├── Podcast.qml     # 播客
│   │       ├── SkinPages.qml   # 皮肤设置
│   │       ├── cloudMusicCherryPick/ # 云端音乐精选
│   │       ├── podcast/        # 播客相关
│   │       └── SettingItems/   # 设置项子页面
│   ├── commonUI/           # 通用UI组件
│   │   ├── LoginPop.qml    # 登录弹窗
│   │   ├── OtherLogin.qml  # 第三方登录
│   │   ├── SelfLeftButton.qml # 自定义左侧按钮
│   │   └── ...             # 其他通用组件
│   └── tiltle/             # 标题栏相关
│       ├── SearchTab.qml   # 搜索标签
│       ├── MaxAndMin.qml   # 最大化最小化按钮
│       └── UserSetting.qml # 用户设置
├── CMakeLists.txt          # CMake 构建配置
└── main.qml                # QML 入口文件

使用说明

基本操作

  1. 用户登录

    • 启动应用后,点击右上角登录按钮
    • 输入用户名和密码进行登录
    • 支持第三方登录方式
  2. 音乐播放

    • 在任何音乐列表中点击歌曲即可开始播放
    • 使用底部播放控制条控制播放/暂停、上一首、下一首
    • 拖动进度条调整播放位置
    • 调整音量滑块控制音量大小
  3. 搜索功能

    • 在顶部搜索框中输入歌曲名、歌手名或专辑名
    • 点击搜索按钮或按回车键执行搜索
    • 在搜索结果中点击歌曲进行播放
  4. 创建播放列表

    • 在歌曲上右键选择"添加到播放列表"
    • 在"我的音乐"->"播放列表"中管理自定义播放列表
  5. 收藏音乐

    • 在歌曲上右键选择"收藏"或点击心形图标
    • 在"我喜欢的音乐"中查看所有收藏的歌曲

高级功能

  1. 个性化设置

    • 进入"设置"页面调整播放器外观
    • 自定义快捷键绑定
    • 设置音质和下载偏好
  2. 下载管理

    • 在歌曲上右键选择"下载"将音乐保存到本地
    • 在"下载管理"中查看下载进度和管理已下载的音乐
  3. 社区互动

    • 浏览社区发现更多音乐内容
    • 关注其他用户查看他们的音乐分享

数据库设计

本项目使用 MySQL 作为后端数据库,设计了 8 个核心表来支持音乐播放器的各项功能:

核心表结构

  1. 用户表 (users) - 存储用户基本信息和认证数据
  2. 歌手表 (artists) - 存储歌手/艺术家信息
  3. 专辑表 (albums) - 存储专辑信息
  4. 歌曲表 (songs) - 存储歌曲详细信息
  5. 播放列表表 (playlists) - 存储用户创建的播放列表
  6. 播放列表歌曲关联表 (playlist_songs) - 存储播放列表中的歌曲
  7. 用户收藏表 (favorites) - 存储用户收藏的歌曲、专辑、歌手
  8. 播放历史表 (play_history) - 存储用户播放历史

详细的表结构和字段说明请参考 backend.md 文件。

文件存储策略

  • 音频文件: 本地文件系统存储,路径格式为 /storage/audio/{年}/{月}/{日}/{uuid}.mp3
  • 图片文件: 本地文件系统存储,包括用户头像、歌手头像、专辑封面等
  • 数据库记录: 在对应表的 url 字段中存储文件的相对路径或完整URL

许可证

本项目仅供学习和参考使用。

联系方式

如有任何问题或建议,请联系项目维护者。

About

基于QML的音乐播放器,后端采用MySQL实现用户登录认证、歌曲搜索、音乐播放控制及系统设置管理,覆盖用户音乐使用全流程,保障交互流畅性与功能完整性。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages