1.了解音乐播放器应该有哪些功能:

音乐播放器的各种控制(上下曲,单曲循环,随机播放,顺序播放),歌曲列表,歌词显示,本地音乐保存,在线音乐搜索,在线音乐播放。

2.制作Qt音乐播放器一定要了解QmediaPlayer和QmediaPlaylist。

使用QmediaPlaylist和QmediaPlayer需要工程文件里添加

QT += multimedia network;

QmediaPlaylist:

算是一个音乐链表,将mp3文件以链表形式添加进去。使用QmediaPlayer定义的类进行播放。默认是顺序播放,要想改变播放模式,操作如下:

QmediaPlaylist::setPlaybackMode用来设置播放模式,播放模式有:

循环(QMediaPlaylist::CurrentItemInLoop)、

顺序(QMediaPlaylist::Sequential)、

随机(QMediaPlaylist::Random)等;

由于类似链表,Playlist里面的歌曲都有一个下标(index)。QmediaPlaylist::CurrentIndex函数用来获取当前歌曲的下标,利用index控制播放哪一首歌。

QmediaPlayer:

当使用QmediaPlaylist定义一个Playlist,QmediaPlayer定义一个Player,

Player->setPlaylist(PlayList) 就可以对应Playlist里面的音乐。

再使用Player->play(),进行播放音乐。

QmediaPlayer可以实现简单的功能实现:

音乐暂停:

Player->pause();

音乐播放:

Player->play();

音乐停止:

Player->stop();

关于如何添加本地音乐文件:

通过QFileDialog::getOpenFileNames去过滤文件,通过QDir::currentPath();获取当前文件路径进行初始化,文件过滤器筛选出“*.mp3”。使用for循环和

PlayList->addMedia(QUrl::fromLocalFile(path));逐渐将本地音乐添加到PlayList里面去。再让Player获取PlayList的内容,添加本地音乐算是完成了。

实现上下曲:

前面说过每首歌曲都有一个下标,通过下标可以实现对歌曲的控制。PlayList->currentIndex();可以获取当前歌曲下标,因此定义一个int类型num等于当前歌曲下标+1就可完成下一首操作,当num == PlayList里面总歌曲数时,再把num置零,实现最后一首下一首时转到第一首歌曲。上一首同理。

关于音乐音量的改变:

通过Player->setVolume(vol)改变音量大小;通过信号与槽,滑块滑动获得值vol,就可以实现滑块控制。

关于音乐进度的改变:

获取音乐进度条和改变进度条需要Player发送信号到槽函数。

Player的位置信号SIGNAL(positionChanged(qint64) 获取当前播放位置

Player的进度信号SIGNAL(durationChanged(qint64) 获取总进度

分别连接各自自定义槽函数,信号是播放器自动触发。

音乐播放器的换肤功能:

准备好预先写好的qss文件进行只读操作:

如何写qss文件:

比如QPushButton { color: red }。

QPushButton指定了是对所有的QPushButton或是其子类控件产生影响,而color:red表明所有的受影响控件的前景色都为red。若想单独修改一个控件的样式这需要该控件调用setObjectname,假设定义了一个

QPushButton new;并不是使用new这个对象名,而是通过new->setObjectname (“wc”),QPushButton#wc { color: red }。这样qss就能识别出修改哪个对象。每种控件格式都大致这样,但每个控件都有各自的子控件对象,在对子对象进行样式修改也是类似格式。

本地音乐的保存:

需要使用到QSqlDatabase,使用它需要在工程文件里添加QT += sql;

QSqlDatabase和我们之前学的mysql非常相似。

首先使用它就需要创建它。

通过QSqlDatabase::addDatabase  创建数据库

setDatabaseName("Music.db");设置数据库名字。

在mysql中创好数据库后就是往库里面插入数据表格,

通过定义QSqlQuery query(Database)打开对应数据库,使用query.exec()函数进行表格操作。exec()里面的操作和我们之前学的mysql一模一样。比如

query.exec("CREATE TABLE musicList(id INTEGER primary key AUTOINCREMENT, musicPath varchar, musicName verchar)");

创建一个名叫musicList的表格,id设为主键,musicPath,musicName都为表头,且该列下数据类型为verchar型。有了mysql的基础数据库操作起来是非常上手的。

sql数据的添加音乐和读取音乐操作基本类似:

QSqlDatabase database = QSqlDatabase::database("Music_Database");

QSqlQuery query(database);按照之前打开对应的数据库,通过query.exec()对表格进行操作

query.exec(QString("SELECT *FROM musicList WHERE musicName = '%1'").arg(info.baseName()));

首先要查找表格里是否有同名音乐,否则不在重复添加。

通过QFileInfo去路径中获得歌名和歌曲路径。

QString musicPath = info.absoluteFilePath();

QString musicName = info.baseName();

query.exec(QString( “INSERT INTO musicList WHERE musicName = '%1'").arg(info.musicName()));

query.exec(QString( “INSERT INTO musicList WHERE musicName = '%1'").arg(info.musicPath()));

这就成功在添加本地音乐的同时把音乐的路径和歌名添加到了数据库。

下一次打开音乐播放器时,自动读取数据库中歌曲路径添加到PlayList中去,就不用麻烦自己每次打开都要自己添加歌曲。

关于在线音乐播放:

打开某音乐官网,在搜索栏中输入凤凰传奇等歌曲名字(用于获取数据),并按F12进入开发者工具,并选择Network(Network会显示网页和服务器之间的数据交流)。找到对应的api接口。通过浏览器搜索该接口,返回的会是密密麻麻的json,这时就要将返回的json进行解析,从而获取歌曲信息。

该图源于网络。

在json里不难看到歌曲的各种信息,通过解析获取歌曲的id,歌手名,音乐名等。将获取的信息填入到api接口中,获取请求。

url=QString("https://music.163.com/song/media/outer/url?id=%1").arg(musicId);

PlayList->addMedia(QUrl(url));

获取的歌曲id是每首歌特有的,通过id可以精准找到需要播放的歌曲,再添加到Playlist中进行播放。

这是我的音乐播放器ui界面:

基于Qt的在线音乐播放器相关推荐

  1. 【基于Qt的在线音乐播放器】

    基于Qt的在线音乐播放器 项目功能: 本在线音乐播放器的功能在于创建一个音乐播放器页面,可以实现搜索功能通过HTTP协议获取网络中数据并解析出来,播放搜索到的歌曲并展示相关信息.效果如图: 相关类及功 ...

  2. 基于QT的网络音乐播放器(一)

    自学Qt已经有一段时间了,但是始终感觉自己还是很弱(其实并不是感觉自己很弱,是自己本来就很弱,哈哈).自己也照着书上敲了几个例子,但觉得还是要写点东西才能真正运用起来.所以,前段时间就写了个很简单的音 ...

  3. 基于QT开发的音乐播放器(附源码)

    基于QT开发的音乐播放器(附源码) 一.简介 1.介绍 2.功能描述 3.系统功能层次模块图 4.各模块功能描述 (1)播放界面 (2)歌词 (3)歌曲信息 (4)歌曲列表 5.文件格式 6.运行环境 ...

  4. 基于android的在线音乐播放器app设计

    Android是Google公司公布的基于Linux内核的手机操作系统,其代码属于完全开放,为开源软件开发人员提供使用方便的框架和平台.,本文以Android开发平台为基础,介绍了音乐播放器的开发.首 ...

  5. 画出android音乐播放器的类图,基于Qt图形框架音乐播放器的设计与实现

    随着互联网软件行业的快速发展,应用市场的软件种类更是琳琅满目,其中,生活娱乐类的软件种类最为繁多,就以本文涉及到的音乐播放器(多媒体)来说,国内目前的主流音乐播放器有QQ音乐.酷狗音乐.百度音乐.网易 ...

  6. 基于Qt的网络音乐播放器(四)酷狗API接口获取歌曲的搜索列表和歌曲的播放

    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票! 我的投票地址:点击为我投票 文章目录 1.效果图 2.准备好前面获取的酷狗api接口 3.网络歌曲搜索实现 4.网络歌曲播放的实现 ...

  7. 项目记录:基于QT的简易音乐播放器

    一.功能介绍 1.能够自定义背景图片 2.实现了音乐播放器的最基本功能,即播放与否.切换歌曲及歌单.显示歌曲信息.调节音量.播     放模式等 3.根据所选中的框体,更新播放列表及播放顺序 4.从播 ...

  8. 基于QT的网络音乐播放器(四)

    关于歌词的显示,其实我的主要思想就是解析歌词部分的字符串.歌词显示分为两部分,一部分是播放器右侧的歌词显示以及下面的桌面歌词的显示.其中桌面歌词让我很难受,想了很久,后面看到一个大佬的一篇文章后才有了 ...

  9. MKOnlinePlayer在线音乐播放器

    文章目录[隐藏] 简介 界面欣赏 注意事项 常见问题 简介 MKOnlineMusicPlayer 是一款开源的基于 Meting 的在线音乐播放器.具有音乐搜索.播放.下载.歌词同步显示.个人网易云 ...

最新文章

  1. pl/sql developer执行光标所在行
  2. 两点C#的propertyGrid的使用心得
  3. qt 关闭窗口的槽函数_勇哥的VC++应用框架学习之QT(1) 信号槽、按钮控件、opencv读取显示图片...
  4. php ?redis,PHP使用Redis存储Session
  5. clickhouse 新增列_Clickhouse入门
  6. 基于DKHadoop的智慧人社服务平台开发案例简述
  7. IPv6Tools:IPv6安全审计框架
  8. 统计学习导论(ISLR) 第四章分类算法课后习题
  9. java类转为er图_ER图,以及转化成关系模式
  10. Hadoop各组件详解
  11. VMware VCenter Converter Standalone 6.2.0下载地址
  12. structs常见错误
  13. vue 日期多选插件
  14. 微信小程序|小程序自定义底部导航栏
  15. 各级政府发布的BIM标准指南37套免费下载
  16. Guass-Legendre(高斯-勒让德)求积方法 | Guass型求积公式 + Legendre多项式
  17. 中望3d快捷键命令大全_室内设计3D快捷键 CAD命令
  18. cf I - Irrational Division
  19. Android恶意样本分析——frida破解三层锁机样本
  20. 三分钟读懂新一代人工智能——ChatGPT

热门文章

  1. FPGA BUG自动分析工具:VSTAR简介
  2. 电气防火限流保护器ASCP 40A 汽车充电桩保护装置
  3. JAVA利用反射模式调用实现类
  4. 外贸网站必看!10个谷歌排名优化提升技巧
  5. Firefox下载servlet文件时,文件名截断问题
  6. 镁客网每周硬科技领域投融资汇总(3.3-3.9),百度再度领投威马汽车
  7. GNN Tensorflow packages
  8. 华东理工大学计算机专业英语,化学工程与工艺专业英语翻译(华东理工大学_最完整版本).pdf...
  9. 安装pycharm流程
  10. ACM6753(18V/3A三相无感BLCD无刷直流电机驱动IC)