成都理工大学Qt课程设计实验报告-基于QT实现的简易音乐播放器.doc

上传人:可****阿 文档编号:93374263 上传时间:2023-07-03 格式:DOC 页数:19 大小:882KB
返回 下载 相关 举报
成都理工大学Qt课程设计实验报告-基于QT实现的简易音乐播放器.doc_第1页
第1页 / 共19页
成都理工大学Qt课程设计实验报告-基于QT实现的简易音乐播放器.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《成都理工大学Qt课程设计实验报告-基于QT实现的简易音乐播放器.doc》由会员分享,可在线阅读,更多相关《成都理工大学Qt课程设计实验报告-基于QT实现的简易音乐播放器.doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 程序设计基础 课程设计(论文)设计(论文)题目 基于QT实现的简易音乐播放器 学院名称 信息科学与技术 专业名称 软件工程 学生姓名 徐玉祥 学生学号 201413040202 任课教师 李军 设计(论文)成绩 教务处 制2015年 5 月 13 日填写说明1、 专业名称填写为专业全称,有专业方向的用小括号标明;2、 格式要求:格式要求: 用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm,左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小

2、五号字底端居中。 具体要求:题目(二号黑体居中);摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体);关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题;第1章 (小二号黑体居中,段前0.5行)1.1 小三号黑体(段前、段后0.5行)1.1.1小四号黑体(段前、段后0.5行)参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照参考文献著录规则(GB/T 77142005)。 学生学习心得通过对Qt Creator一个月左右的系统学习,我了解到了Qt具有完整的开发环境以及优良的跨平台性和移植性的特点,初步掌

3、握了Qt中基本类的运用,诸如窗体部件QWidget,QMainWindow等;学会了通过QPushBotton在窗体中添加按钮以及运用QHBoxlayout和QVBoxlayout等对窗体控件进行布局,学会了使用UI界面文件和纯代码编写这两种方式对应用进行设计和实现。更重要的是我深刻明白了要想精通Qt这门语言并非一朝一夕的事情,需要勤学苦练,认真钻研的精神。学生(签名):徐玉祥 2015年 5 月 13 日诚信承诺本人郑重声明所呈交的课程报告是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注的地方外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的

4、同学对本文研究所做的贡献均已在报告中作了明确的说明并表示谢意。学生(签名):任课教师评语成绩评定:任课教师(签名): 年 月 日基于QT实现的简易音乐播放器作者姓名:徐玉祥 专业班级:201413040202 指导教师:李军摘 要随着现在科技的发展,越来越多的嵌入式设备已经被广泛应用于生活中,这大大提高了人们的生活质量。时下,音乐播放器已经成为人们生活中不可或缺的必备品。它的诞生,让动听的声音有了存储的载体,得以广泛的传播和分享。然而,各种播放器功能特点不同,有些功能强大却占用系统资源多,有些软件小却不支持多种音频格式。论文在讨论Qt Phonon媒体框架的基础上,通过对音乐播放器的基本功能进

5、行了分析和界面的总体设计,提出一套适用于嵌入式系统的媒体播放器框架方案,并最终运用Qt Creator实现了整个应用,通过测试运行表明该音乐播放器基本功能完善、运行稳定,能够较好地满足实际应用的需要。关键词:嵌入式;播放器;Qt;Phonon目 录第1章前 言21.1选题依据21.1.1调查研究21.1.2方案说明2第2章设计与实现42.1界面设计42.2项目框架设计52.3系统实现6第3章实验结论与心得体会14参考文献15第1章 前 言1.1 选题依据Qt以其优良的跨平台特性,强大的功能,良好的移植性使之逐渐成为广泛应用的GUI系统,因此,基于Qt的嵌入式系统中实现音乐播放器具有重要的价值。

6、如今,PC机中音频文件越来越多,小巧而功能完善的音乐播放器已经成为人们生活中不可或缺的必备品。它的诞生,让动听的声音有了存储的载体,得以广泛的传播和分享。1.1.1 调查研究经调查研究发现,目前,各种各样的音乐播放器充斥着互联网,每种播放器功能特点不同,有些功能强大却占用系统资源多,有些软件小却不支持多种音频格式。通过对音乐播放器的基本功能进行了分析和界面的总体设计,本文提出一套适用于嵌入式系统的媒体播放器框架方案,并基于Qt集成开发环境实现软件,具有体积小,支持播放格式多,系统资源占用少等优点。而与其他播放器相比,本软件的缺点是基本功能虽然具备,但是功能却不够完善,比如不支持播放列表、不能够

7、显示歌曲的具体信息等,这是需要改进的地方。1.1.2 方案说明本选题是基于QT的音乐播放器,包括音频文件的添加,播放与暂停,换肤等。 具体功能如下: (1)播放状态显示: 1用户界面能显示正在被播放的歌曲的进度,显示歌曲的播放状态; 2用户能够显示正在被播放歌曲的音量; (2)播放控制: 1用户能够控制正在被播放歌曲的进度; 2用户能调节正在被播放歌曲的音量; 3用户能够控制歌曲停止、暂停与播放;(3)换肤用户可以通过“换肤”按钮实现播放器皮肤的切换,该播放器内置五款皮肤。功能说明:在Qt的应用开发中,使用了很多媒体变量,在本音乐播放器开发设计中基于Phonon媒体框架使用到的主要媒体变量如下

8、:Phonon :MediaObject *mediaObject:媒体对象,管理媒体源Phonon :AudioOutput *audioOutput:音频输出,连接物理设备Phonon :SeekSlider *seekSlider:播放进度滑竿,实现进度条Phonon :VolumeSlider *volumeSlider:音量滑竿,实现音量的大小调节QList sources:音乐资源列表,实现对音乐资源的管理除此之外还有:QTableWidget *musicTable :音乐资源表格,实现对音乐资源的总体控制QAction *playAction :播放按钮,添加到音乐表格中,实现

9、对音乐的播放QAction *pauseAction :暂停按钮,实现对音乐的暂停QAction *stopAction :停止按钮,实现对音乐的停止QAction *addFilesAction :添加文件按钮,添加到音乐表格的菜单栏中,实现添加音乐QLCDNumber *timeLcd :电子显示屏,显示正在播放音乐的时间QPushButton *PbChange :换肤按钮,实现对音乐播放器皮肤的更换具体实现功能的方法在下面介绍。第2章 设计与实现2.1 界面设计设计界面如图所示:界面说明:播放器的用户界面为UI设计后有Qt编译后形成的图形化界面,即播放器的外观界面。此界面的设计也是在U

10、I模式下对播放器外观的设计,可用一些美工手段进行加工,如使用样式表等对界面和界面按钮的美化等。左上角控件为菜单栏Files,内嵌QAction类型的addFiles控件,用于文件的添加。下面控件timeLcd属QLCDNumber类,用于显示音乐播放的时间,只读。进度条滑块seekSlider属Phonon媒体框架的SeekSlider类型 ,用于播放进度的调节,初始值为False,可读写。下方三个按钮均属于QAction类,分别为playAction、pauseAction、stopAction,用于播放控制的播放、暂停与停止。初始值均为False,可读写。音量调节滑块volumeSlide

11、r属Phonon媒体框架的VolumeSlider类型 ,用于播放音量的调节,初始值为max,可读写。QPushButton类型的换肤控件PbChange在窗口的最下方位置,用于窗体皮肤的切换,初始值为默认第一张背景,可读写。2.2 项目框架设计这个软件设计的目的就是制作一个能够播放音频的播放器。通过创建带有Phonon模块的工程,对音乐播放器进行设计,主要用到模块中的MediaObject(管理媒体源)AudioOutput(连接物理设备)SeekSlider(实现进度条)QList(实现资源添加),在播放的文件方面,可播放本地的音频文件在功能方面,它具备一些基本的音乐操作处理功能(暂停、播

12、放、音量调节、拖动、停止等)。设计该播放器涉及到的几种重要类:MediaObjectClass:主要提供一个能够处理媒体播放的介面。MediaObject可说是处理多媒体档案最基本的一部份,它接受并管理来自于MediaSource的媒体档案,而媒体播放、暂停与停止都是由它来控制。而在此之前,media物件必须要与outputnode连接,这个nodes主要将媒体输出至底层的硬体,例如音效卡或显示卡等,而所需要的outputnode则是根据多媒体的内容而所不同。目前Phonon有两种outputnode:AudioOutput声音播放,VideoWidget影像播放。AudioOutputCla

13、ss:主要是用来把多媒体的声音送到声音输出装置。所以它能够经由类似喇叭等输出装置来播放,多媒体资料的来源必须要经过Phonon:createPath()由MediaObject连接。SeekSliderClass:提供一个可滑动的slider来设定多媒体串流播放的位置,即播放进度条,所以它会连接到MediaObject,并控制串流目前的位置。VolumeSliderClass:提供可以控制声音装置音量的widget,它会连接到MediaObject,以此控制音量输出的大小。QAction Class :QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。应

14、用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命令。本播放器通过QWidget:addAction()函数将Actions添加到窗口部件上。2.3 系统实现首先,本音乐播放器具备的功能图解:播放 暂停 停止基本操作 音量调节 进度调节功能 打开本地文件 播放时间显示 其他操作 换肤下面就各主要功能分版块介绍:1.在本播放器开发中,使用中文编码,在main函数中包含头文件#include ,在main函数体中加入如下代码:QTextCodec *codec = QTextCodec:codecForName(GBK);/中文编码QTextCodec:setCodecForTr(code

15、c);QTextCodec:setCodecForLocale(codec);QTextCodec:setCodecForCStrings(codec);即可实现中文编码。2.用到的Phonon媒体变量:媒体变量名规划类型变量名概述Phonon:MediaObject *musicObject媒体对象Phonon:MediaObject *audiooutput音频输出Phonon:SeekSlider*seekSlider播放进度滑竿Phonon:VolumeSlider*volumeSlider音量调节滑竿QListsources音乐资源3,步骤及功能实现代码:新建一个空的Qt项目文件,继

16、承自QMainWindow,添加main函数。Phonon的工作机制是使用MediaSourse即源文件,通过Path连接到AudioOutput,最后使用AudioOutput将数据发送到相关物理设备。所以,如果要使用Phonon的相关媒体变量,需要在Pro文件中添加一行代码:QT += phonon接着,在头文件中需要包含的有:#include #include #include #include #include #include #include #include 私有成员变量:void setupActions(); void setupMenus(); void setupUi()

17、; Phonon:SeekSlider *seekSlider; /进度条滑块 Phonon:MediaObject *mediaObject; /播放媒体界面 Phonon:MediaObject *metaInformationResolver; Phonon:AudioOutput *audioOutput; /音频输出 Phonon:VolumeSlider *volumeSlider; /音量调节滑竿 QList sources;/媒体资源 QAction *playAction; /播放按钮 QAction *pauseAction; /暂停按钮 QAction *stopActi

18、on; /停止按钮 QAction *addFilesAction; /添加文件按钮 QLCDNumber *timeLcd; /显示屏 QTableWidget *musicTable; /音乐表格 QPushButton *PbChange; /换肤按钮 int myRand(int max); /随机数int miGrade;下面就各功能分块介绍:1, 添加文件功能addFilesAction = new QAction(tr(添加文件), this);connect(addFilesAction, SIGNAL(triggered(), this, SLOT(addFiles();vo

19、id MainWindow:addFiles() QStringList files = QFileDialog:getOpenFileNames(this, tr(选择文件),/添加文件对话框 QDesktopServices:storageLocation(QDesktopServices:MusicLocation);/文件地址 if (files.isEmpty()/如果文件为空,返回 return; int index = sources.size(); foreach (QString string, files) Phonon:MediaSource source(string)

20、; sources.append(source); metaInformationResolver-setCurrentSource(sources.at(index);将添加文件按钮加入到菜单中:void MainWindow:setupMenus()/设置菜单 QMenu *fileMenu = menuBar()-addMenu(tr(文件); fileMenu-addAction(addFilesAction);最终功能效果如图:2,显示播放时间功能void MainWindow:tick(qint64 time) QTime displayTime(0, (time / 60000)

21、 % 60, (time / 1000) % 60); timeLcd-display(displayTime.toString(mm:ss);功能效果如图:3,播放进度条功能seekSlider = new Phonon:SeekSlider(this); seekSlider-setMediaObject(mediaObject);QHBoxLayout *seekerLayout = new QHBoxLayout; seekerLayout-addWidget(seekSlider功能效果如图:4,播放控制功能void MainWindow:setupActions() playAct

22、ion = new QAction(style()-standardIcon(QStyle:SP_MediaPlay), tr(), this); playAction-setDisabled(true);/设置初始不可点击 pauseAction=newQAction(style()-standardIcon(QStyle:SP_MediaPause),tr(), this); pauseAction-setDisabled(true); /设置初始不可点击 stopAction = new QAction(style()-standardIcon(QStyle:SP_MediaStop),

23、 tr(), this);stopAction-setDisabled(true); /设置初始不可点击/连接槽函数 connect(playAction, SIGNAL(triggered(), mediaObject, SLOT(play(); connect(pauseAction, SIGNAL(triggered(), mediaObject, SLOT(pause() ); connect(stopAction, SIGNAL(triggered(), mediaObject, SLOT(stop(); connect(addFilesAction, SIGNAL(triggere

24、d(), this, SLOT(addFiles();将播放控制按钮添加到窗体,使用QToolBar类的bar指针布局QToolBar *bar = new QToolBar;bar-addAction(playAction);bar-addAction(pauseAction);bar-addAction(stopAction);功能效果如图:5,音量滑块功能volumeSlider = new Phonon:VolumeSlider(this);volumeSlider-setAudioOutput(audioOutput);volumeSlider-setSizePolicy(QSize

25、Policy:Maximum, QSizePolicy:Maximum);QToolBar *bar = new QToolBar;QHBoxLayout *playbackLayout = new QHBoxLayout;playbackLayout-addWidget(bar);playbackLayout-addWidget(volumeSlider);功能效果如图:6,换肤功能QPushButton *PbChange;/换肤按钮PbChange = new QPushButton(换肤,this);connect(PbChange,SIGNAL(clicked(),this,SLOT

26、(slotChange();/槽函数,每一个随机数对应一种事件,换背景图片void MainWindow:slotChange() int i= myRand(miGrade); switch (i) case 0: setStyleSheet(background-image:url(D:/Qt/XuYuXiang/Player/images/2.jpg);); break; case 1: setStyleSheet(background-image:url(D:/Qt/XuYuXiang/Player/images/3.jpg);); break; case 2: setStyleShe

27、et(background-image:url(D:/Qt/XuYuXiang/Player/images/1.png);); break; case 3: setStyleSheet(background-image:url(D:/Qt/XuYuXiang/Player/images/5.jpg);); break;default: break;int MainWindow:myRand(int max)/产生4以内的随机正整数 max = 4; int r = qrand(); return r%max;7.点击事件void MainWindow:tableClicked() bool w

28、asPlaying = mediaObject-state() = Phonon:PlayingState; mediaObject-stop(); mediaObject-clearQueue(); if (wasPlaying) mediaObject-play(); else mediaObject-stop();8.主窗口设置QWidget *widget = new QWidget;widget-setLayout(mainLayout);setCentralWidget(widget);setWindowTitle(播放器);setMaximumSize(800,400);setM

29、inimumSize(800,400);setStyleSheet(background-image:url(D:/Qt/XuYuXiang/Player/images/4.jpg););最终界面效果如图:第3章 实验结论与心得体会该播放器利用Phonon媒体框架,实现了播放MP3、WAV、WMV等Windows音频格式的文件。通过对该程序的编写和对面向对象程序设计的了解,使得我对Qt编程设计又有了更深的认识,同时了解了Phonon的相关知识。 课程是辛苦劳累的,但收获同样是巨大的,在课程设计中每解决一个问题,那种成就是无法语言的,调试中往往会遇到很多问题,不过经过查询资料,咨询老师,与同学探

30、讨最终会得到理想的程序。只有在实践中才能得到真正的提升,因为只有在项目实战中才能遇到我们在课堂上遇不到的问题。而解决这些问题的过程正是我们学习与进步的过程。回想在这次学习的的过程中,遇到了许多大大小小的问题,而这些问题,都是以我目前的知识水平无法解决的,所以,为了解决这些问题,需要自己去查找资料、请教同学,在这个过程中学到了很多以前不懂的知识。总的来说,这个音乐播放器是粗糙的、功能不全的,还存在很多的细节需要去优化,存在许多功能需要完善,比如对音乐资源列表的实现,歌词显示等等,这些问题让我意识到还有很多东西需要学习,而这些知识是潜在的,需要我主动的、不断的去探索和挖掘。参考文献1霍亚飞,吴迪,白建平,等.Qt Creator快速入门M.北京:北京航空航天大学出版社,2012.2 Daniel Solin,袁鹏飞(译),等.24小时学通Qt编程M.北京:人民邮电出版社,2000.15

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com