《QT制作简易音乐播放器报告》由会员分享,可在线阅读,更多相关《QT制作简易音乐播放器报告(9页珍藏版)》请在金锄头文库上搜索。
1、目 录1.课程实习目的11.1了解QT和QT creator11.2了解Qt phonon的多媒体框架12.课程实习题目描述和要求12.1 QT制作音乐播放器12.2音乐播放器能实现简单的功能13.课程实习报告内容13.1实验步骤13.2程序代码23.3实现截图44.总结55任务分配61.课程实习目的1.1了解QT和QT creatorQt Creator是跨平台的 Qt IDE, Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32 位及 64 位)、Mac OS X 以及 Window
2、s。根据官方描述,Qt Creator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成任务。1.2了解Qt phonon的多媒体框架 Phonon是什么?Qt从4.4版本开始提供的一套多媒体框架,提供多媒体回放的功能。目前在Qt 4.6中实现多媒体播放图形界面主要依赖于phonon框架,其实qt中还有一个Multimedia模块,帮助文档中对它的描述是:实现底层的多媒体播放功能,在一般情况下上层的接口phonon模块更适合实现这些功能。phonon最初是 一个 源于KDE的项目,为使用音频和视频的应用程序开发提供的一个框架。应用程序不用去管多媒体播放是通过什么实现的
3、(如gstreamer、xine),只需调用相应的接口就行,但这中间需要一个中转,被称为backend。Qt也是通过phonon来实现跨平台的多媒体播放。2.课程实习题目描述和要求2.1 QT制作音乐播放器通过创建带有Phonon模块的工程,对音乐播放器进行设计,主要用到模块中的MediaObject (管理媒体源) AudioOutput (连接物理设备)SeekSlider( 实现进度条)QList (实现播放列表 )2.2音乐播放器能实现简单的功能这个软件设计的目的就是制作一个能够播放音频的播放器。在播放的文件方面,可播放本地的音频文件在功能方面,它具备一些基本的音乐操作处理功能(暂停、
4、播放、音量调节、拖动、停止等)此播放器是在Windows操作系统下的QT4集成环境下完成的,QT是跨平台的开发软件,只要将此播放器的代码在其他QT能够运行的平台上重新编译就可以在当前平台上运行。3.课程实习报告内容3.1实验步骤【步骤一】 新建一个 Qt Gui 工程,在建立过程中需要包含 Phonon 模块,之后生成文件如下图: Qt Gui 工程会生成一个 ui 文件,在这里是 mainwindow.ui 。双击 mainwindow.ui 进行一番简单的布局, 大概地说, Phonon 的工作机制是使用 MediaObject 来管理 MediaSource 即源文件,通过 Path 连
5、接到 AudioOutput ,最后是由 AudioOutput 将数据发送到相关物理设备。 于是有了步骤二。【步骤二】 步骤一是用来实现基本的界面,而步骤二是用代码实现具体的功能。 基于对 Phonon 的认识,有了以下四点: 使用 MediaObject 管理媒体源 使用 AudioOutput 连接物理设备 使用 SeekSlider 实现进度条 使用 QList 实现播放列表 3.2程序代码1.头文件:yinyue.h#ifndef YINYUE_H#define YINYUE_H#include #include #include #include namespace Ui clas
6、s yinyue;class yinyue : public QDialog Q_OBJECTpublic: explicit yinyue(QWidget *parent = 0); yinyue();private: Ui:yinyue *ui; Phonon:MediaObject *mediaObject; Phonon:AudioOutput *audioOutput; QList sourceList;/播放列表 QMenu mau;private slots: void on_addFiles_clicked(); void on_playFile_clicked(); void
7、 on_pauseFile_clicked(); void on_stopFile_clicked(); void on_listWidget_customContextMenuRequested(QPoint pos);#endif / YINYUE_H2.源文件:yinyue.cpp#include yinyue.h#include ui_yinyue.h#include#include yinyue:yinyue(QWidget *parent) : QDialog(parent), ui(new Ui:yinyue) ui-setupUi(this); mediaObject = ne
8、w Phonon:MediaObject(this);/媒体对象 audioOutput = new Phonon:AudioOutput(this);/音频输出 Phonon:createPath(mediaObject, audioOutput);/连接媒体对象与音频输出 ui-seekSlider-setMediaObject(mediaObject);/进度滑动条 ui-volumeSlider-setAudioOutput(audioOutput);/音量调节yinyue:yinyue() delete ui;void yinyue:on_addFiles_clicked() QSt
9、ringList files = QFileDialog:getOpenFileNames(this, tr(Selec Files to play); / 使用 QFileDialog 的 getOpenFileNames 方法获取若干个音乐文件, QString file; foreach(file, files)/ 使用 Qt 中的 foreach 遍历每个选中的文件,将其添加到播放列表中。 ui-listWidget-addItem(file); sourceList.append(file); void yinyue:on_playFile_clicked()/首先判断列表是否为空,
10、接着设置播放队列,然后播放当前文件,/最后使得播放按钮不可用,而激活暂停按钮。 if(sourceList.isEmpty() QMessageBox:information(this, tr(no music files), tr(no files to play); return ; mediaObject-setQueue(sourceList);/列表循环 mediaObject-play(); ui-playFile-setEnabled(false);/setEnabled是可用的意思,当为1(true)时可用,当为0(false)时按钮为灰白不可用 ui-pauseFile-se
11、tEnabled(true);void yinyue:on_pauseFile_clicked() mediaObject-pause();/暂停当前播放 ui-pauseFile-setEnabled(false);/当暂停按钮不可用的时候 ui-playFile-setEnabled(true);/播放按钮开启void yinyue:on_stopFile_clicked() mediaObject-stop();/停止播放 ui-pauseFile-setEnabled(true);/暂停按钮恢复可用 ui-playFile-setEnabled(true);/播放按钮可用void yi
12、nyue:on_listWidget_customContextMenuRequested(QPoint pos) mau.clear(); QMenu *child; child=mau.addMenu(QIcon(:/tupian/_2afc7d1fb5e8980f60d1da316a9f09af.gif),菜单); child-addAction(ui-playFiles); child-addAction(ui-action); mau.move(ui-listWidget-viewport()-mapToGlobal(pos); mau.show();3.3实现截图4.总结通过这次实
13、验使我们对这几个领域有了一定的了解和经验,这对于我们意义重大。程序是完成了,但是该播放器还是有很多需要改进的地方,我们今后会在此程序的基础上进行改进、扩充,争取做的更好。在实现程序过程中,我们组的成员一起探讨、交流想法、找资料、搜歌曲等,让我体会到了团队的力量,这也是我们今后成为一名合格的IT人员应该具有的素质,这个实习给了我们这个机会,我们很庆幸我们抓住个这个机会来锻炼自己。同时,在这个过程中,我们的学习、分析问题、解决问题等方面的能力都有了很大的提高,也对我们的耐心、细心、坚持等素质进行了磨练,我们相信我们能在今后的路上走的更好、更远。5任务分配排序姓名任务量承担任务1234要求:排序按同学所做的工作量从高到低排序,任务量用百分制表示,4人之和为100%参考文献:124小时学通QT编程 著:Daiel Solin 译:袁鹏飞 人民邮电出版社2 KDE2/QT 编程宝典 电子工业出版社3 ARM嵌入式linux系统开发 电子工业出版社本页每位同学都必须填写,签字处手写! “课程实习评分表”每个同学自己填写,完成的内容要写详细,等级分为优秀、良好、中等、及格、不及格。“课程实习小组长评分表”由小组长填写,内容要真实,等级实事求是。课程实习评分表本人 在 中,独立完成