- 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
您可能关注的文档
- 人教版初中八年级英语下册1-2单元测试题.doc
- 粗梳动物细毛纱项目商业计划书(2013年融资成功案例范文)-协助企业融资-投资专家免费咨询.pdf
- 杨碧一的社会实践活动日记.doc
- 积力三井挥发性防锈油在某知名品牌圆规防锈中的应用案例.doc
- 2012届高三数学:专题9立体几何.doc
- 高效护肤品减压又抗敏核心提示:肌肤在重重压力下往往更加脆弱敏感,更容易因外界刺激.pdf
- 研究国有通信施工企业应如何摆脱困境.doc
- 化学平衡练习一附答案.doc
- 盛世家园工程土钉墙施工方案.doc
- 咳嗽用药讲究多.docx.docx
- 护理学相关知识复习测试卷共三套.doc
- 护理学相关知识复习试题含答案(3套).doc
- 2025届高考语文复习:补写句子 课件.pptx
- 气压带和风带对气候的影响(第1课时)(教学设计).docx
- 气压带和风带对气候影响教学设计2024-2025学年高中地理人教版(2019)选择性必修1.docx
- 《故都的秋》课件 2024-2025学年统编版高中语文必修上册.pptx
- 《屈原列传》课件 2024-2025学年统编版高中语文选择性必修中册.pptx
- 《巫溪家乡文化》课件-2024-2025学年高一语文同步备课课件(统编版必修上册).pptx
- 《苏武传》课件 2023-2024学年统编版高中语文选择性必修中册.pptx
- 郑州中控ZKTime8.3 WEB考勤软件培训文档.pptx
文档评论(0)