- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用Qt做一个简易音乐播放器
【步骤一】
新建一个 Qt Gui 工程,在建立过程中需要包含 Phonon 模块,之后生成文件如下图:
Qt Gui 工程会生成一个 ui 文件,在这里是 mainwindow.ui 。双击 mainwindow.ui 进行一番简单的布局,如下图:
关于这个 ui 界面,中央位置是一个 QListWidget ,用来显示音乐文件列表;下面一栏红色矩形是一个 QVBoxLayout 垂直布局部件,用来确定等会要建立的播放进度条的位置;而下面则是四个相关控制按钮。
大概地说, Phonon 的工作机制是使用 MediaObject 来管理 MediaSource 即源文件,通过 Path 连接到 AudioOutput ,最后是由 AudioOutput 将数据发送到相关物理设备。
于是有了步骤二。
【步骤二】
步骤一是用来实现基本的界面,而步骤二是用代码实现具体的功能。
基于对 Phonon 的认识,有了以下四点:
① 使用 MediaObject 管理媒体源
② 使用 AudioOutput 连接物理设备
③ 使用 SeekSlider 实现进度条
④ 使用 QList 实现播放列表
于是产生了相应的代码:
view plaincopy to clipboardprint?
01.Phonon::MediaObject *mediaObject;
02.Phonon::AudioOutput *audioOutput;
03.Phonon::SeekSlider *seekSlider;
04.QListPhonon::MediaSource sourceList;//播放列表
Phonon::MediaObject *mediaObject;
Phonon::AudioOutput *audioOutput;
Phonon::SeekSlider *seekSlider;
QListPhonon::MediaSource sourceList;//播放列表
并且需要在构造函数里面将 mediaObject 和 audioOutput 连接起来:
view plaincopy to clipboardprint?
01.Phonon::createPath(mediaObject, audioOutput);
Phonon::createPath(mediaObject, audioOutput);
从而使得数据能从 mediaObject 到达 audioOutput ,再通过物理设备播放。
1、 要播放音乐首先需要有源文件,所以先实现添加文件的功能。
首先,将添加按钮和添加功能连接起来:
view plaincopy to clipboardprint?
01.connect(this-ui-addBtn, SIGNAL(clicked()), this, SLOT(addFiles()));
connect(this-ui-addBtn, SIGNAL(clicked()), this, SLOT(addFiles()));
从而实现点击按钮激活相应操作的功能,而添加音乐文件的槽的代码如下:
view plaincopy to clipboardprint?
01.void MainWindow::addFiles(){
02. QStringList files = QFileDialog::getOpenFileNames(this, tr(Selec Files to play));
03. QString file;
04. foreach(file, files){
05. this-ui-listWidget-addItem(file);
06. sourceList.append(file);
07. }
08.}
void MainWindow::addFiles(){
QStringList files = QFileDialog::getOpenFileNames(this, tr(Selec Files to play));
QString file;
foreach(file, files){
this-ui-listWidget-addItem(file);
sourceList.append(file);
}
}
上述代码是使用 QFileDialog 的 getOpen
文档评论(0)