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霍亚飞,吴迪,
31、白建平,等.Qt Creator快速入门M.北京:北京航空航天大学出版社,2012.2 Daniel Solin,袁鹏飞(译),等.24小时学通Qt编程M.北京:人民邮电出版社,2000.1. 基于C8051F单片机直流电动机反馈控制系统的设计与研究2. 基于单片机的嵌入式Web服务器的研究 3. MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究 4. 基于模糊控制的电阻钎焊单片机温度控制系统的研制 5. 基于MCS-51系列单片机的通用控制模块的研究 6. 基于单片机实现的供暖系统最佳启停自校正(STR)调节器7. 单片机控制的二级倒立
32、摆系统的研究8. 基于增强型51系列单片机的TCP/IP协议栈的实现 9. 基于单片机的蓄电池自动监测系统 10. 基于32位嵌入式单片机系统的图像采集与处理技术的研究11. 基于单片机的作物营养诊断专家系统的研究 12. 基于单片机的交流伺服电机运动控制系统研究与开发 13. 基于单片机的泵管内壁硬度测试仪的研制 14. 基于单片机的自动找平控制系统研究 15. 基于C8051F040单片机的嵌入式系统开发 16. 基于单片机的液压动力系统状态监测仪开发 17. 模糊Smith智能控制方法的研究及其单片机实现 18. 一种基于单片机的轴快流CO,2激光器的手持控制面板的研制 19. 基于双单
33、片机冲床数控系统的研究 20. 基于CYGNAL单片机的在线间歇式浊度仪的研制 21. 基于单片机的喷油泵试验台控制器的研制 22. 基于单片机的软起动器的研究和设计 23. 基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究 24. 基于单片机的机电产品控制系统开发 25. 基于PIC单片机的智能手机充电器 26. 基于单片机的实时内核设计及其应用研究 27. 基于单片机的远程抄表系统的设计与研究 28. 基于单片机的烟气二氧化硫浓度检测仪的研制 29. 基于微型光谱仪的单片机系统 30. 单片机系统软件构件开发的技术研究 31. 基于单片机的液体点滴速度自动检测仪的研制32. 基
34、于单片机系统的多功能温度测量仪的研制 33. 基于PIC单片机的电能采集终端的设计和应用 34. 基于单片机的光纤光栅解调仪的研制 35. 气压式线性摩擦焊机单片机控制系统的研制 36. 基于单片机的数字磁通门传感器 37. 基于单片机的旋转变压器-数字转换器的研究 38. 基于单片机的光纤Bragg光栅解调系统的研究 39. 单片机控制的便携式多功能乳腺治疗仪的研制 40. 基于C8051F020单片机的多生理信号检测仪 41. 基于单片机的电机运动控制系统设计 42. Pico专用单片机核的可测性设计研究 43. 基于MCS-51单片机的热量计 44. 基于双单片机的智能遥测微型气象站 4
35、5. MCS-51单片机构建机器人的实践研究 46. 基于单片机的轮轨力检测 47. 基于单片机的GPS定位仪的研究与实现 48. 基于单片机的电液伺服控制系统 49. 用于单片机系统的MMC卡文件系统研制 50. 基于单片机的时控和计数系统性能优化的研究 51. 基于单片机和CPLD的粗光栅位移测量系统研究 52. 单片机控制的后备式方波UPS 53. 提升高职学生单片机应用能力的探究 54. 基于单片机控制的自动低频减载装置研究 55. 基于单片机控制的水下焊接电源的研究 56. 基于单片机的多通道数据采集系统 57. 基于uPSD3234单片机的氚表面污染测量仪的研制 58. 基于单片机
36、的红外测油仪的研究 59. 96系列单片机仿真器研究与设计 60. 基于单片机的单晶金刚石刀具刃磨设备的数控改造 61. 基于单片机的温度智能控制系统的设计与实现 62. 基于MSP430单片机的电梯门机控制器的研制 63. 基于单片机的气体测漏仪的研究 64. 基于三菱M16C/6N系列单片机的CAN/USB协议转换器 65. 基于单片机和DSP的变压器油色谱在线监测技术研究 66. 基于单片机的膛壁温度报警系统设计 67. 基于AVR单片机的低压无功补偿控制器的设计 68. 基于单片机船舶电力推进电机监测系统 69. 基于单片机网络的振动信号的采集系统 70. 基于单片机的大容量数据存储技
37、术的应用研究 71. 基于单片机的叠图机研究与教学方法实践 72. 基于单片机嵌入式Web服务器技术的研究及实现 73. 基于AT89S52单片机的通用数据采集系统 74. 基于单片机的多道脉冲幅度分析仪研究 75. 机器人旋转电弧传感角焊缝跟踪单片机控制系统 76. 基于单片机的控制系统在PLC虚拟教学实验中的应用研究77. 基于单片机系统的网络通信研究与应用 78. 基于PIC16F877单片机的莫尔斯码自动译码系统设计与研究79. 基于单片机的模糊控制器在工业电阻炉上的应用研究 80. 基于双单片机冲床数控系统的研究与开发 81. 基于Cygnal单片机的C/OS-的研究82. 基于单片
38、机的一体化智能差示扫描量热仪系统研究 83. 基于TCP/IP协议的单片机与Internet互联的研究与实现 84. 变频调速液压电梯单片机控制器的研究 85. 基于单片机-免疫计数器自动换样功能的研究与实现 86. 基于单片机的倒立摆控制系统设计与实现 87. 单片机嵌入式以太网防盗报警系统 88. 基于51单片机的嵌入式Internet系统的设计与实现 89. 单片机监测系统在挤压机上的应用 90. MSP430单片机在智能水表系统上的研究与应用 91. 基于单片机的嵌入式系统中TCP/IP协议栈的实现与应用92. 单片机在高楼恒压供水系统中的应用 93. 基于ATmega16单片机的流量
39、控制器的开发 94. 基于MSP430单片机的远程抄表系统及智能网络水表的设计95. 基于MSP430单片机具有数据存储与回放功能的嵌入式电子血压计的设计 96. 基于单片机的氨分解率检测系统的研究与开发 97. 锅炉的单片机控制系统 98. 基于单片机控制的电磁振动式播种控制系统的设计 99. 基于单片机技术的WDR-01型聚氨酯导热系数测试仪的研制 100. 一种RISC结构8位单片机的设计与实现 101. 基于单片机的公寓用电智能管理系统设计 102. 基于单片机的温度测控系统在温室大棚中的设计与实现103. 基于MSP430单片机的数字化超声电源的研制 104. 基于ADC841单片机
40、的防爆软起动综合控制器的研究105. 基于单片机控制的井下低爆综合保护系统的设计 106. 基于单片机的空调器故障诊断系统的设计研究 107. 单片机实现的寻呼机编码器 108. 单片机实现的鲁棒MRACS及其在液压系统中的应用研究 109. 自适应控制的单片机实现方法及基上隅角瓦斯积聚处理中的应用研究110. 基于单片机的锅炉智能控制器的设计与研究 111. 超精密机床床身隔振的单片机主动控制 112. PIC单片机在空调中的应用 113. 单片机控制力矩加载控制系统的研究 项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!项目论证,项目可行性研究报告,可行性研究报告,项目推广,项目研究报告,项目设计,项目建议书,项目可研报告,本文档支持完整下载,支持任意编辑!选择我们,选择成功!单片机论文,毕业设计,毕业论文,单片机设计,硕士论文,研究生论文,单片机研究论文,单片机设计论文,优秀毕业论文,毕业论文设计,毕业过关论文,毕业设计,毕业设计说明,毕业论文,单片机论文,基于单片机论文,毕业论文终稿,毕业论文初稿,本文档支持完整下载,支持任意编辑!本文档全网独一无二,放心使用,下载这篇文档,定会成功!16