基于QT设计的音乐播放器.docx
《基于QT设计的音乐播放器.docx》由会员分享,可在线阅读,更多相关《基于QT设计的音乐播放器.docx(9页珍藏版)》请在冰点文库上搜索。
基于QT设计的音乐播放器
安康学院
嵌入式系统应用期末工程报告
课题名称:
音乐播放器
姓名:
珍
学号:
2021020216
院系:
电子与信息工程系
专业:
电子信息工程
时间:
2021年12月
一系统介绍
随着我国社会的快速开展,音乐播放器已经成为人们生活中不可或缺的必备品。
它的诞生,让动听的声音有了存储的载体,得以广泛的传播和分享。
各种平台开发的音乐播放器层出不穷,但是基于Qt开发的音乐播放器小巧而功能齐全,方便移植到嵌入式平台下或其他平台下,只需一次编译就可在不同平台下运行播放。
随着现在科技的开展,越来越多的嵌入式设备已经被广泛应用于生活中,因此嵌入式软件的开发对于嵌入式系统设备的开展有着非常重要的意义。
比方linux系统对各种设备的广泛支持性,能方便应用与电脑、手机、汽车及工业等。
嵌入式系统在众多领域的应用带来了便利,提高了我们的生活质量,尤其是消费电子产品潜力是巨大的。
随着生活的普遍提高,功能强大、专用性强的嵌入式音乐播放器已经成为人们需求的重点,所以,在嵌入式系统上开发音乐播放器是当前热门的技术之一。
Qt以其优良的跨平台特性,强大的功能,良好的移植性使之逐渐成为广泛应用的GUI系统,因此,基于Qt的嵌入式系统中实现音乐播放器具有重要的价值。
如今,PC机中音频文件越来越多,各种播放器功能特点不同,有些功能强大却占用系统资源多,有些软件小却不支持多种音频格式。
通过比较多款音乐播放器的特点,本文提出一套适用于嵌入式系统的媒体播放器框架方案,该方案是基Qt集成开发环境,具有体积小,支持播放格式多,系统资源占用少,支持播放列表等。
二.系统实现
1.系统总体设计
本选题是基于QT的音乐播放器,包括功能要求:
a、每次播放一首歌曲
b、至少可以实现3首歌曲切换;例如,下一首、上一首等根底功能等。
具体功能如下:
〔1〕播放状态显示:
1.用户界面能显示正在被播放的歌曲的进 度,显示歌曲的播放状态;
2.用户能够显示正在被播放歌曲的音量;
3.用户界面能够显示被播放歌曲的歌名。
〔2〕播放控制:
1.用户能够控制歌曲停顿、暂停与播放;
2.用户能够切换上一首、下一首歌曲。
〔3〕列表中歌曲管理:
在歌曲列表中用户能添加所需的歌曲文件的 文件名,并长期保存在该列表中,直到用户 删除该列表中的歌曲名。
〔4〕核心播放控件:
能够翻开MP3文件,并将其解码,然后启动音频硬件播放歌曲。
2.软件设计
头文件代码:
#ifndefWIDGET_H
#defineWIDGET_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
namespaceUi{
classWidget;
}
classWidget:
publicQWidget
{
Q_OBJECT
public:
explicitWidget(QWidget*parent=0);
~Widget();
privateslots:
voidon_openPushButton_clicked();
voidon_stop_clicked();
voidon_next_clicked();
voidon_pushButton_clicked();
voidon_listView_clicked(constQModelIndex&index);
private:
Ui:
:
Widget*ui;
QStringListlist;
QStringfilePath[100];
intk;
intj;
QMediaPlayermediaPlayer;
};
#endif//WIDGET_H
main.cpp文件代码:
#include"widget.h"
#include
intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);
Widgetw;
w.show();
returna.exec();
}}
widget.cpp文件代码:
#include"widget.h"
#include"ui_widget.h"
Widget:
:
Widget(QWidget*parent):
QWidget(parent),
ui(newUi:
:
Widget)
{
ui->setupUi(this);
k=0;
}
Widget:
:
~Widget()
{
deleteui;
}
voidWidget:
:
on_openPushButton_clicked()
{
constQStringListmusicPaths=QStandardPaths:
:
standardLocations(QStandardPaths:
:
MusicLocation);
filePath[k]=QFileDialog:
:
getOpenFileName(this,tr("OpenFile"),
musicPaths.isEmpty()?
QDir:
:
homePath():
musicPaths.first(),
tr("MP3files(*.mp3);;Allfiles(*.*)"));
list<QStringListModel*model=newQStringListModel(list);
ui->listView->setModel(model);
if(!
filePath[k].isEmpty()){
mediaPlayer.setMedia(QUrl:
:
fromLocalFile(filePath[k]));
mediaPlayer.play();
}
j=k;
k++;
}
voidWidget:
:
on_stop_clicked()
{
mediaPlayer.stop();
}
voidWidget:
:
on_next_clicked()
{
j++;
if(j==k)
j=0;
if(!
filePath[j].isEmpty()){
mediaPlayer.setMedia(QUrl:
:
fromLocalFile(filePath[j]));
mediaPlayer.play();
}
}
voidWidget:
:
on_pushButton_clicked()
{
j--;
if(j<0)
j=k-1;
if(!
filePath[j].isEmpty()){
mediaPlayer.setMedia(QUrl:
:
fromLocalFile(filePath[j]));
mediaPlayer.play();
}
}
voidWidget:
:
on_listView_clicked(constQModelIndex&index)
{
QStringmusicName=filePath[index.row()];
qDebug()<if(!
musicName.isEmpty()){
mediaPlayer.setMedia(QUrl:
:
fromLocalFile(musicName));
mediaPlayer.play();
}
}
三.系统调试
工程结果
图一
图二
图三
图四
四.设计总结
这个软件设计的目的就是制作一个能够播放音频的播放器。
在播放的文件方面,可播放本地的音频文件在功能方面,它具备一些根本的音乐操作处理功能〔暂停、播放、音量调节、拖动、停顿等〕,此播放器是在Windows操作系统下的QT5.5集成环境下完成的,QT是跨平台的开发软件,只要将此播放器的代码在其他QT能够运行的平台上重新编译就可以在当前平台上运行。
本设计的创新点是系统具有很好的可移植性,它的实现过程以及核心的代码对类似应用具有很好的可重用性,只需通过较小的修改就能移植到不同的操作系统和平台上,可以广泛使用在各种嵌入式系统中,如PDA,智能手机等方面,具有较高的经济价值,同时也可以为开发其他嵌入式系统软件提供参考意见;并支持播放控制、播放列表等功能。
虽然设计的音乐播放器版本已经很多,但是能实现并量身打造一款属于自己的播放器,还是很不错的决定。