基于Phonon库的音乐播放器设计 - 图文

更新时间:2024-05-08 22:25:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

题目(中 文): (英 文)

基于Phonon库的音乐播放器设计 The Design of Music Player Based on

Phonon Library

姓 名 学 号 院 (系) 专业、年级 指导教师

电子工程系 电子信息工程 级

湖南科技学院本科毕业论文(设计)诚信声明

本人郑重声明:所呈交的本科毕业论文(设计),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

本科毕业论文(设计)作者签名: 年 月 日

毕业论文(设计)任务书

课题名称: 学生姓名: 系 别: 专 业: 指导教师:

基于phonon库的音乐播放器设计

电子工程系 电子信息工程

1、 主题词、关键词: 音乐 2、毕业论文(设计)内容要求: 1) 查阅并整理一定QT和phonon库及音乐播放器设计相关资料; 2) 要求基于QT Creator软件,借助phonon库设计开发一款音乐播放器;该播放器界面清楚明了,操作简单实效,支持多种格式媒体播放。 播放器 QT phonon 3) 该播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能于一体,性能良好。

A

3、文献查阅指引: [1] 田淑清.全国计算机等级考试二级教程--C语言程序设计[M].北京:高等教育出版社,2008:1 [2] 袁慧梅 宋宇.基于CPLD的MIDI音乐播放器的设计[J].北京,首都师范大学,2005:1 [3] 黄振杰 卢小冰. 基于AT89S52单片机的多功能音乐播放器[J].广州,华南农业大学,2009:1-4 [4] 许谨. 基于Android平台音乐播放器的设计与实现[J].北京,北京邮电大学,2011:1-4 [5] Andrew Koenig.C陷阱与缺陷[M].北京:人民邮电出版社,2008:121 [6] 林华 张新林.大学计算机基础教程[M].北京:人民邮电出版社,2007:234-235 [7] 宫虎波等.Linux编程从入门到精通[M].北京: 化学工业出版社,2009:175 [8] Peter Van Der Linden.C专家编程[M].北京:人民邮电出版社,2008:243-244 [9] Andrew Koenig Barbara Moo.C++沉思录[M].北京:人民邮电出版社,2008: 1 [10] 利普曼,加.劳乔. C++ Primer[M].北京:人民邮电出版社,2006:28 [11] 周学毛.新编C语言程序设计教程[M].西安:西安电子科技大学出版社,2008:258 [12] Kenneth A.Reek.C和指针[M].北京:人民邮电出版社,2008 [13] marjot Singh; Ketan Bacchuwar; Akash Choubey; Srikrishna Karanam; Devinder Kumar.An OMR Based Automatic Music Player.Proceedings of 2011 3rd International Conference on Computer Research and Development(ICCRD 2011) VOL.01[J].2011 4、毕业论文(设计)进度安排: (1) 第7学期的寒假,查文献,熟悉C++语言的使用; (2) 第8学期的第1周,查文献了解QT和Phonon库的相关知识; (3) 第2-3周,搞清基本软件开发流程,开始软件开发; (4) 第4-5周,完成基本界面设计; (5) 第6周,初步完成软件开发;写论文。 (6) 第7-8周测试软件,完成程序,迎接中期检查,填写中期检查表;进一步补充毕业论文内容 (7) 第9周完成毕业论文初稿; (8) 第10周定稿,填写相关表格; (9) 第11周毕业论文装订,准备答辩。 教研室意见: 负责人签名: 注:本任务书一式三份,由指导教师填写,经教研室审批后一份下达给学生,一份交指导教师,一份留系里存档。

B

湖南科技学院本科毕业论文(设计)开题报告书

论文(设计)题目 作 者 姓 名 指导教师姓名、职称 基于phonon库的音乐播放器设计 邱儒男 所属系、专业、年级 周玲 讲师 电子工程系 电子信息工程 专业 2009 年级 10000 开题日期 2012-12-24 预计字数 选题的根据:1)说明本选题的理论、实际意义 2)综述国内外有关本选题的研究动态和自己的见解 1)本选题的理论、实际意义 选择本课题的意义在于开发一款别致而又贴近用户使用的音乐播放器。 通过对软件设计人员和用户双向沟通,开发出好的软件产品。 2)国内外有关本选题的研究动态和自己的见解 多媒体播放器开发在IT发展势头下得到了极大地关注,一款贴近用户,别致的音乐播放器是每个程序员的追求。同时,开发出属于自己的一款音乐播放器也是个人的兴趣所在,可以提高自己的编程能力,锻炼自己;为以后的工作做练兵。 主要内容: 绪论 1 QT及phonon库简介 2 播放器的基本设计需求 3 软件结构及界面设计 4 详细设计 结论 研究方法: 结构化生命周期法,其理念是把整个系统开发过程分成若干个阶段,每个阶段完成相应的任务,从而开发出我们想要的产品软件。查阅国内外最新资料,开拓视野,对已有的成果加以分析利用。虚心向导师和同学学习,不断积累知识,再运用所学知识,完成论文。

C

完成期限和采取的主要措施: 1、完成期限:2013.1.10-2013.5.8 (1)第7学期的寒假,查文献,熟悉C++语言的使用;(2)第8学期的第1周,查文献了解QT和Phonon库的相关知识;(3)第2-3周,搞清基本软件开发流程,开始软件开发;(4)第4-5周,完成基本界面设计;(5)第6周,初步完成软件开发;写论文。(6)第7-8周测试软件,完成程序,迎接中期检查,填写中期检查表;进一步补充毕业论文内容;(7)第9周完成毕业论文初稿;(8)第10周定稿,填写相关表格;(9)第11周毕业论文装订,准备答辩。 2、采取的主要措施: (1)密切联系本组设计成员及毕业设计指导导师,寻求有关毕业设计信息,确定设计课题方向与设计内容;(2)充分利用图书馆和网络查阅相关资料,广泛获取必要的知识,了解最新研究动态。(3)虚心向老师请教和同学进行学习交流,保障毕业设计的顺利完成。 主要参考资料: [1] 田淑清.全国计算机等级考试二级教程--C语言程序设计[M].北京:高等教育出版社,2008:1 [2] 袁慧梅 宋宇.基于CPLD的MIDI音乐播放器的设计[J].北京,首都师范大学,2005:1 [3] 黄振杰 卢小冰.基于AT89S52单片机的多功能音乐播放器[J].广州,华南农业大学,2009:1-4 [4] 许谨.基于Android平台音乐播放器的设计与实现[J].北京,北京邮电大学,2011:1-4 [5] Andrew Koenig.C陷阱与缺陷[M].北京:人民邮电出版社,2008:121 [6] 林华 张新林.大学计算机基础教程[M].北京:人民邮电出版社,2007:234-235 [7] 宫虎波等.Linux编程从入门到精通[M].北京: 化学工业出版社,2009:175 [8] Peter Van Der Linden.C专家编程[M].北京:人民邮电出版社,2008:243-244 [9] Andrew Koenig Barbara Moo.C++沉思录[M].北京:人民邮电出版社,2008: [10] 利普曼 加.劳乔.C++ Primer[M].北京:人民邮电出版社,2006:28 [11] 周学毛.新编C语言程序设计教程[M].西安:西安电子科技大学出版社,2008:258 [12] Kenneth A.Reek.C和指针[M].北京:人民邮电出版社,2008 [13] marjot Singh; Ketan Bacchuwar; Akash Choubey; Srikrishna Karanam; Devinder Kumar.An OMR Based Automatic Music Player.Proceedings of 2011 3rd International Conference on Computer Research and Development(ICCRD 2011) VOL.01[J].2011 指导教师意见: 指导教师签名: 教研室意见: 签 名: 年 月 日

D

1 开 题 报 告 会 纪 要 时间 2012年12月24日 姓 名 职务(职称) 讲师 教授 姓 名 陈泽顺 徐晓 地点 职务(职称) 副教授 副教授 三教517 姓 名 张文昭 刘爱林 职务(职称) 副教授 副教授 与 会 人 员 周玲 刘志壮 会议记录摘要: 1. QT在开发过程中有什么优势? (刘爱林老师) 答因为QT具有良好的跨平台性,同时,其使用的编程语言是C++,这是一门面向对象的编程语言,对开发具有非常良好的可控性。易于理解。 2.为什么要基于phonon库?(周玲老师)) 答:因为phonon库是KDE中一个良好的多媒体接口,而QT借助这个良好的多媒体接口,能够无需外部解码器,实现一个多媒体播放器的设计。 3.程序是如何实现播放功能的?(张文昭老师) 答:主要是通过QT中的信号与槽机制,而后用phonon库中的相关类,实现解析媒体文件的内容,从而实现播放媒体文件的功能。 会议主持人: 记 录 人: 年 月 日 指导小组意见

负责人签名: 系部 负责人签名: 年 月 日 意 见 年 月 日 注:此表由学生本人填写,一式三份,一份留系里存档,指导老师和本人各保存一份

E

湖南科技学院毕业论文(设计)中期检查表

毕业论文(设计)题 目 学生姓名 邱儒男 基于phonon库的音乐播放器设计 学 号 专 业 检查日期 200906002339 电子信息工程 2013.4.10 系 别 电子工程系 指导教师 周玲 指导教师检查情况记载及修改意见: 已经完成的工作: 1、相关资料的收集 2、播放器设计流程; 3、播放器界面开发; 4、播放器基本功能实现; 5、播放器测试; 6、论文大部分内容已经完成。 下一步的工作: 1、进一步完善软件功能; 2、完成软件测试 3、同时继续论文的写作工作,找出错误,完善论文。 签名: 注:此表用于指导教师在学生毕业论文(设计)初稿完成后对学生执行任务书情况进行中期检查时用,由指导教师填写。

F

湖南科技学院毕业设计(论文)指导过程记录表 毕业论文(设计)题目 学生姓名 指导教师 邱儒男 周玲 学号 职称 基于Phonon库的音乐播放器设计 200906002339 讲师 专业班级 系(教研室) 电信0903 电子工程系 指导 QT功能简介,了解phonon库,布置收集了解相关资料 指导内容 记录(一) 学 生 签 名: 2013 年 1月10 日 指导教师签名: 2013 年 1月10 日 讲解软件开发流程 过指导内容 记录(二) 学 生 签 名: 2013 年 2月 2 0日 指导教师签名: 2013 年 2月 20 日 软件整体框架的搭建 程指导内容 记录(三) 学 生 签 名: 2013年3 月 10 日 指导教师签名: 2013年3 月 10 日 记录 讲解播放器具体实现过程中的注意事项 指导内容 记录(四) 学 生 签 名: 2013年 3 月 23 日 指导教师签名: 2013年 3 月 23 日

G

指导 初步开始论文文字部分(原理)的写作。 指导内容 记录(五) 学 生 签 名: 2013年4 月 3日 指导教师签名: 2013年4 月 3日 修改程序中的几个bug。 指导内容 记录(六) 学 生 签 名: 2013年 4 月 12 日 指导教师签名: 2013年 4 月 12 日 过程记录 指导完善软件的功能,论文初步定稿。 指导内容 记录(七) 学 生 签 名: 2013年 4 月 25 日 指导教师签名: 2013年 4 月25 日 答辩指导。 指导内容 记录(八) 学 生 签 名: 2013 年 5 月 6 日 指导教师签名: 2013 年5 月 6 日 (对情况是否属实做出意见) 答辩小组组长意见

组长(签名): 年 月 日 注:本表与毕业论文一起装订存档。 H

湖南科技学院本科毕业论文(设计)评审表

论文题目 作者姓名 指导教师 姓名、职称 中 文 摘 要 关键词 英 文 摘 要 关键词 基于Phonon库的音乐播放器设计 邱儒男 所属系、专业、年级 电子工程系 电子信息工程 专业 2009年级 字 数 周玲 讲师 10000 定稿日期 2013.5.8 音乐不仅是一种美妙的声音符号,也是人们思想和情感的主要载体之一。一款好的PC音乐播放器能够提供给我们好的音乐播放效果,同时能带给我们更好的愉悦和享受。 如今现实生活中,网上充斥着形形色色的音乐播放器,它们一般都需携带解码器以还原经过压缩的多媒体音乐文件。在五花八门的音乐播放器软件中,它们有的作风精简、有的功能强大,多数都支持所有的常见媒体格式(.mp3、.wmv、.wma、.ape等),虽说它们都有自己独特的功能和设计理念,可也都有着自己的弊端,如酷狗音乐播放器占用系统资源大,有些甚至还有厌烦的广告弹窗等。正是由于这些固有的缺点,本文将开发一款界面清楚明了,操作简单实用,支持多种格式媒体播放的音乐播放器。该播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能于一体,性能良好。该播放器支持MP3、WAV、WMA等音频格式。本程序的开发是基于QT Creator软件,开发核心借助phonon库。本文所开发的程序是基于WINDOWS 7平台下开发。 音乐 播放器 QT phonon Music, as a great sound symbols, it is one of the major carrier of people's thoughts and feelings. A good PC music player can provide us with good music effect, also can bring us more pleasure and enjoyment. Now in the real life, full of every hue online music player, they generally need to carry the decoder to restore through multimedia music file compression. In all kinds of music player software, some of them are reduced, some powerful style, most of them support all common media formats (.Mp3,.Wmv,.Wma,.Ape), although they have their own features and unique design concept, but it has its own disadvantages, such as the cool dog music player takes abundance system resources, some even have annoying ads pop. Because of these defects, this paper will develop a interface clear, simple operation efficiency, support multiple format media playing music player. The player set play, pause, stop, fast forward, rewind, the next song, a song, volume control and other functions, good performance. The player supports MP3, WAV, WMA and other audio formats. The development of the program is based on QT Creator software, the development core is the KDE phonon library. The procedure developed in this paper is based on the WINDOWS7 development platform. Music Player Phonon QT

I

指导教师评定成绩 评审基元 评审要素 目的明确 符合要求 理论意义或 实际价值 选题恰当 查阅文献 资料能力 综合运用 知识能力 研究方案的 设计能力 评审内涵 选题符合专业培养目标,体现学科、专业特点和教学计划的基本要求,达到毕业论文(设计)综合训练的目的。 符合本学科的理论发展,有一定的学术意义;对经济建设和社会发展的应用性研究中的某个理论或方法问题进行研究,具有一定的实际价值。 题目规模适当,难易度适中;有一定的科学性。 能独立查阅相关文献资料,归纳总结本论文所涉及的有关研究状况及成果。 能运用所学专业知识阐述问题;能对查阅的资料进行整理和运用;能对其科学论点进行论证。 整体思路清晰;研究方案合理可行。 满分 10 指导教师 实评分 选题质量25% 10 5 10 10 5 能力水平40% 能运用本学科常规研究方法及相关研究手段(如计算机、研究方法和手实验仪器设备等)进行实验、实践并加工处理、总结信10 段的运用能力 息。 外文应用 能阅读、翻译一定量的本专业外文资料、外文摘要和外5 能力 文参考书目(特殊专业除外)体现一定的外语水平。 文题相符 较好地完成论文选题的目的要求。 论点鲜明;论据充分;条理清晰;语言流畅。 符合学术论文的基本要求。用语、格式、图表、数据、量和单位、各种资料引用规范化、符合标准。 10000字左右。 5 15 10 5 论文质量35% 写作水平 写作规范 论文篇幅 实评总分 成绩等级

指导教师评审意见: 指导教师签名:

说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级,实评总分90—100分记为优秀,80—89分记为良好,70—79分记为中等,60—69分记为及格,60分以下记为不及格

J

评阅教师评定成绩 评审基元 评审要素 目的明确 符合要求 理论意义或 实际价值 选题恰当 查阅文献 资料能力 综合运用 知识能力 研究方案的 设计能力 研究方法和手段的运用能力 外文应用 能力 文题相符 论文质量35% 写作规范 论文篇幅 写作水平 评审内涵 选题符合专业培养目标,体现学科、专业特点和教学计划的基本要求,达到毕业论文(设计)综合训练的目的。 符合本学科的理论发展,有一定的学术意义;对经济建设和社会发展的应用性研究中的某个理论或方法问题进行研究,具有一定的实际价值。 题目规模适当,难易度适中;有一定的科学性。 能独立查阅相关文献资料,归纳总结本论文所涉及的有关研究状况及成果。 能运用所学专业知识阐述问题;能对查阅的资料进行整理和运用;能对其科学论点进行论证。 整体思路清晰;研究方案合理可行。 能运用本学科常规研究方法及相关研究手段(如计算机、实验仪器设备等)进行实验、实践并加工处理、总结信息。 能阅读、翻译一定量的本专业外文资料、外文摘要和外文参考书目(特殊专业除外)体现一定的外语水平。 较好地完成论文选题的目的要求。 论点鲜明;论据充分;条理清晰;语言流畅。 符合学术论文的基本要求。用语、格式、图表、数据、量和单位、各种资料引用规范化、符合标准。 10000字左右。 满分 10 评阅教师 实评分 选题质量25% 10 5 10 10 5 10 5 5 15 10 5 能力水平40% 实评总分 成绩等级

评阅教师评审意见: 评阅教师签名: 说明:评定成绩分为优秀、良好、中等、及格、不及格五个等级,实评总分90—100分记为优秀,80—89分记为良好,70—79分记为中等,60—69分记为及格,60分以下记为不及格。

K

湖南科技学院本科毕业论文(设计)答辩记录表

论文题目 作者姓名 指导教师 姓名、职称 基于Phonon库的音乐播放器设计 邱儒男 所属系、专业、年级 电子工程系 电子信息工程专业 2009年级 周玲 讲师 答 辩 会 纪 要 时间 答 辩 小 组 成 员 姓 名 陈泽顺 刘爱林 职务(职称) 副教授 副教授 姓 名 张文昭 周玲 地点 职务(职称) 副教授 讲师 姓 名 徐晓 刘志壮 职务(职称) 副教授 教授 答辩中提出的主要问题及回答的简要情况记录: 1、该播放器跟网上的酷狗等播放器有什么区别? 答:该播放器无需借助额外的解码器就能实现音乐播放,同时其开放源码,开发软件为具有优良的跨平台特性的QT,平台移植性较好。 2、该播放器是如何实现打开音频文件的? 答:播放器主要通过QT中信号与槽的机制,运用phonon库中的相关类,来实现解码器的功能,从而实现播放音乐。 3、该播放器能否实现在线下载歌曲? 答:不能,因为没有开发相关的网络部分模块和搜索引擎模块。 会议主持人: 记 录 人: 年 月 日

L

评语: 答 辩 小 组 意 见 评定等级: 负责人(签名): 年 月 日 系 学 位 委 员 会 意 见 校 学 位 委 员 会 意 见 评语: 论文(设计)最终评定等级: 负责人(签名): 系部(公章) 日 评语: 评定等级: 负责人(签名): 日 年 月 年 月

M

目录

绪论................................................................................................................................ 1 1 QT及Phonon库介绍 ................................................................................................ 3

1.1 QT简介 ............................................................................................................ 3 1.2 Phonon库简介 ................................................................................................. 4 2 播放器的基本设计需求............................................................................................ 5

2.1 基本设计需求.................................................................................................. 5 2.2工作原理........................................................................................................... 5 3 软件结构及界面设计................................................................................................ 7

3.1软件结构设计................................................................................................... 7 3.2 GUI界面设计 .................................................................................................. 7 4 详细设计.................................................................................................................. 10

4.1主界面设计..................................................................................................... 10 4.2打开文件设计................................................................................................. 13 4.3播放歌曲设计................................................................................................. 14 4.4 播放上一首或下一首歌曲设计.................................................................... 16 4.5 音量控制设计................................................................................................ 17 结 论............................................................................................................................ 18 参考文献...................................................................................................................... 19 附 录............................................................................................................................ 20 致 谢............................................................................................................................ 35

I

基于Phonon库的音乐播放器设计

摘 要

音乐不仅是一种美妙的声音符号,也是人们思想和情感的主要载体之一。一款好的PC音乐播放器能够提供给我们好的音乐播放效果,同时能带给我们更好的愉悦和享受。

如今现实生活中,网上充斥着形形色色的音乐播放器,它们一般都需携带解码器以还原经过压缩的多媒体音乐文件。在五花八门的音乐播放器软件中,它们有的作风精简、有的功能强大,多数都支持所有的常见媒体格式

(.mp3、.wmv、.wma、.ape等),虽说它们都有自己独特的功能和设计理念,可也都有着自己的弊端,如酷狗音乐播放器占用系统资源大,有些甚至还有厌烦的广告弹窗等。正是由于这些固有的缺点,本文将开发一款界面清楚明了,操作简单实用,支持多种格式媒体播放的音乐播放器。该播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能于一体,性能良好。该播放器支持MP3、WAV、WMA等音频格式。本程序的开发是基于QT Creator软件,开发核心借助phonon库。本文所开发的程序是基于WINDOWS 7平台下开发。

【关键词】:音乐 播放器 QT phonon

II

The Design of Music Player Based on Phonon Library

Abstract

Music, as a great sound symbols, it is one of the major carrier of people's thoughts and feelings. A good PC music player can provide us with good music effect, also can bring us more pleasure and enjoyment.

Now in the real life, full of every hue online music player, they generally need to carry the decoder to restore through multimedia music file compression. In all kinds of music player software, some of them are reduced, some powerful style, most of them support all common media formats (.Mp3,.Wmv,.Wma,.Ape), although they have their own features and unique design concept, but it has its own disadvantages, such as the cool dog music player takes abundance system resources, some even have annoying ads pop. Because of these defects, this paper will develop a interface clear, simple operation efficiency, support multiple format media playing music player. The player set play, pause, stop, fast forward, rewind, the next song, a song, volume control and other functions, good performance. The player supports MP3, WAV, WMA and other audio formats. The development of the program is based on QT Creator software, the development core is the KDE phonon library. The procedure developed in this paper is based on the WINDOWS7 development platform.

【Key words】Music Player Phonon QT

III

绪论

优美的音乐旋律,一直以来都是我们在学习生活以及工作中的良好调节剂,它使我们紧张的工作生活得到放松。

多媒体播放器的设计是集计算机以及多媒体技术于一体的综合设计。当今,随着IT技术、信息网络技术的发展,计算机现已广泛用于社会生活的各个领域

[1]

,同时,多媒体播放器的发展也得到了越来越多人的认可。作为多媒体中的一

个重要组成部分,音乐,它改变了信息的存在形式,实现知识信息数字化,从而为人们获得知识信息提供极大地方便和无穷的乐趣。现实生活中,很多地方都渗透着多媒体的应用,比方说:多媒体教学软件、电子游戏等。它带给了我们另外一个有声有色的世界。

多媒体技术是当今IT领域发展非常快同时也非常活跃的一个部分。多媒体技术融合了图像处理、声音处理、文本和通信等技术,它借助着今天信息技术的飞速发展,深刻的改变着我们的世界。

如今,随着IT技术的不断发展,人们对多媒体产品需求也不断增长。而音乐播放器作为我们平时播放音乐的媒介,自然一直也是软件开发人员所关注的重点。我们在网上只要打开播放器,可能同时就出来了很多软件公司开发出来的播放器,可能平时也用过其中的一些音乐播放器,我想大家都感慨良多吧!在我看来,这些播放器它们都有一些需要完善的地方。比如占用系统资源大,容易造成电脑死机等。所以,一款特别的、贴近用户的音乐播放器非常值得去研究和开发。

而当今的音乐播放器开发,一般都是集中在几个方面:

1、以硬件(基于CPLD和基于单片机等)为基础的音乐播放器,其基本原理是前者是结合EDA技术,采用可编程逻辑器件作为控制核心而设计的[2],后者则是由单片机控制为核心而设计[3]。

2、以安卓为平台的移动终端上的音乐播放器,其基本原理就是在一个LINUX内核上跑一个安卓系统,在安卓系统中开发相关的软件[4]。

3、在广大PC及笔记本上运行的音乐播放器。

在这些类别不同的音乐播放器中,虽说都是音乐播放器,不过,可能由于其依赖的平台不一样,因此,其具体实现还是有很大的差异。而且,其各自的优势可能又是各自的劣势。本文开发音乐播放器是针对PC用户。

软件的开发从来都是一个很大的工程,如今软件工程已经发展成为新学科,成为IT的一个热点。原始的软件开发方法由于其固有的缺点,在当今软件产品的开发中,无论是软件产品的质量、成本、开发时间等都无法满足需求。

1

曾经有人说过:最令人生厌的问题都来自那些看起来能工作,其实却潜藏着Bug的程序。正因为这样,事前必须有周密的思考[5]。

本文将开发一款界面清楚明了,操作简单实效,支持多种格式媒体播放的音乐播放器。该播放器集播放、暂停、停止、快进、快退、下一曲、上一曲、音量调节等功能于一体,性能良好。该播放器支持MP3、WAV、WMA等音频格式。

在现实生活中,我们可能都用过“酷狗音乐盒”、“酷我音乐盒”、“千千静听”等非常优秀的播放器,但是在我们使用这些播放器的过程中总有一些不尽如人意的地方,比方说软件庞大,有的多达几十MB,频频的软件升级等。可最重要的缺点在我看来是这些公司并没有开放其源代码,对于一个程序员来说,这可能是觉得非常遗憾的;因为我们无法知道其具体过程的实现。本文设计的这个基于KDE中phonon库的音乐播放器,除了实现一般播放器的常用功能之外,而且播放器具有体积小等优点,最重要的是源码是自己写出来的。本程序的开发环境是QT,操作系统是WIN7,用到的编程语言是C++。

这次毕业设计所追求的是结合C++语言提供的先进设计思想以及QT中多样化的媒体控制手段,结合用户(呵呵,一般说来是自己)使用音乐播放器的习惯和对多媒体播放器的要求,设计了一款操作界面大方、美观,操作简单、实用,可以实现在播放列表中加载一个或者是多个媒体文件;能够实现连续播放多个媒体文件等功能的音乐播放器。

2

1 QT及Phonon库介绍

1.1 QT简介

QT是一个跨平台的C++开发工具,有时又被称为C++部件工具箱。QT被用在KDE桌面环境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是挪威QT Software 的产品,2008年6月17日被芬兰的诺基亚(Nokia)公司收购,以增强该公司在跨平台软件研发方面的实力。

使用QT开发的软件,可以在任何支持的平台上编译与运行,而不需要修改源代码。可以实现本平台的图形界面风格,也可实现其它平台的图形界面风格。比如可以在Microsoft Windows平台下编译出具有苹果公司Mac OS图形界面风格的应用程序。

经过多年发展,QT不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库、OpenGL库、多媒体库(Phonon)、网络库、脚本库、 XML库、WebKit库等等,其内核库也加入了进程间通信、多线程等模块,极大的丰富了QT开发大规模复杂跨平台应用程序的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere”。

QT中使用了C++的非标准扩展,用在编译前增加一个名为moc的预处理器QT开放源代码,并且提供自由软件的用户协议。使得它可以被广泛地应用2009 年5月11日,诺基亚QT Software 宣布 QT源代码管理系统面向公众来实现,moc将QT代码处理成标准C++代码。 在各平台上的开放源代码软件开发中。

开放,QT 开发人员可通过为 QT 以及与 QT 相关的项目贡献代码、翻译、示例以及其他内容,协助引导和塑造 QT未来的发展。为了便于这些内容的管理,QT Software 启用了基于 Git 和 Gitorious 开源项目的Web 源代码管理系统。在推出开放式 QT 代码库的同时,QT Software 在其网站发布了其产品规划。其中概述了研发项目中的最新功能,展现了现阶段对 QT 未来发展方向的观点,以期鼓励社区提供反馈和贡献代码,共同引导和塑造 QT 的未来。

其包括了以下模块:

1、基本模块,包括核心,窗口组件等 2、集成开发环境 3、工作区模块

4、openGL三维图形模块 5、网络模块 6、表格模块

3

7、XML模块 8、数据库模块[7]

1.2 Phonon库简介

Phonon库原本是KDE4的开放原码多媒体API,不过后来,KDE与QT合并开发了。反正简单说来的话,就是QT使用Phonon这个多媒体框架来提供一般的影音多媒体文件的播放。

Phonon库是一个跨平台多媒体框架,能够在QT应用程序中使用与播放影音多媒体内容。但如果我们不借助这个库而去开发多媒体软件的话,我们可能要下载解码器,才能播放多媒体的文件。

整体来说,Phonon的架构只要记住三个东西: 1、media object

Phonon的基础,用于管理多媒体来源。来源可能是影音档等,而能够提供基本的播放控制,例如开始、暂停戒结束。而提供多媒体数据给media object的则为media source,在给media object之前通常是raw data,再由media object迚行转换。

2、sinks

输出多媒体,例如在widget上播放影片戒是输出至声卡(播放音乐)。通常sink是一个播放的装置(例如声卡等)。而sink只接受media object来的数据,由media object控制播放;而由sink来处理这些多媒体

3、paths

用来连接Phonon的对象,意即media object不sink之间的连接。 本款QT播放器开发采用的是结构化生命周期法,其理念是把整个系统开发过程分成若干个阶段,每个阶段完成相应的任务,从而开发出我们想要的产品软件。其基本思想是:

1、设计人员与用户交互的原则 2、先逻辑然后物理实现的原则 3、“自顶向下”的原则[6]

研究手段:主要结合自己以前的软件开发经验,联系本次软件需求分析和参考文献,根据项目的特点选择适当的开发工具软件(QT)和编程语言(C++)来制定合适的软件开发方案。

4

2 播放器的基本设计需求

2.1 基本设计需求

根据我们的软件需求分析,可获得软件系统的基本功能需求,以下从不同的角度来描述系统的需求,并且使用图例来描述,系统的功能需求,我们分成几个部分来概括,即播放器的基本控制需求,播放器列表管理需求如图1所示。

播放 暂停 播放器停止 在播放器运行时,用户选择一首歌曲后,播放器将播放选中的播放列表中的歌曲,并同时显示当前进度;当歌曲未暂停或停止时,用户单击“暂停”,播放器进入暂停状态;如果是单击“停止”按钮,播放器将停止播放,用户点击“上一曲”或“下一曲”按钮,播放器将播放上一首或下一首歌曲;用户点击“播放列表”按钮,播放列表则显示或隐藏,点击“歌词”按钮,则显示歌词。 2.2工作原理

播放器的整个工作原理就是这样一个流程图。从主界面开始,如果播放音乐需先添加需播放的音频文件到播放列表,如果已经添加了播放的音频文件在播放列表中,则可直接在主界面上的点击播放按钮,切歌可通过上一曲后下一曲实现,另一种快捷的切歌方式是直接通过点击播放列表中的歌曲,则播放器播放当前点击的歌曲。同时,在播放列表上还有歌词显示按钮,如果歌词存在于相关的路径下,点击歌词按钮则显示或隐藏歌词。

上一曲 下一曲 音量控制

图1 播放列表管理结构图

5

当然,该播放器还有其他一些功能,比方说隐藏在后台播放,就不再在此详述。工作原理如图2所示。

主界面 歌词显示 播放列表 打开文件选择歌曲播放

图2 播放器工作原理图

6

3 软件结构及界面设计

3.1软件结构设计

软件人员要开发出一款成功的软件,其不仅要求功能完善,而且还要界面友好、美观。因此,对于一个成功的软件设计,功能模块的设计是关键。在软件的需求分析阶段,搞清楚了软件“做什么”的问题,从而形成目标软件的逻辑模型。而现在我们要做的是如何把逻辑模型转化为物理模型,着手实现软件的需求,描述系统的总体结构。

软件的设计最主要的是软件的模块化,这样能减少软件的复杂程度以及出错的机会。而我使用的编程语言是C++,这本来是面向对象的语言,面向对象编程从面向对象设计开始,而面向对象设计从抽象开始。抽象建立了一种抽象数据类型,C++使用类这个特性来实现它[8]。C++的核心概念是类[9],其重要的特征还是类[10]。而本文设计的播放器所使用的正是phonon库中的相关类。自顶向下将软件系统划分为若干子模块。每个模块只完成某一个特定的功能,而组后各个模块拼接成一个整体,从而达到整个系统设计的要求。

将播放器系统划分为多个子模块是为了降低其开发的复杂度,而且还能提高软件的可读性、可维护性,从而使得各个模块之间应尽可能独立。做到各个模块高内聚,低耦合,从而为设计高质量的软件结构奠定基础。

音乐播放器

主界面 添加文件 播放列表 播放、暂停 上一曲下一曲 音量控制 歌词 图3音乐播放器系统模块图

3.2、GUI界面设计

播放器的GUI界面设计主要是两个方面的设计:主界面布局设计和按钮的代码设计。在这其中,主界面的布局非常重要,因为如今的用户都非常注重软件界面的美观性,软件界面的美观在很大程度上影响着产品受用户欢迎的程度以及

7

其盈利性。比方说,苹果公司的产品之所以在全世界这么受欢迎,一部分原因就是其界面效果的美观大方。同时,如今很多的软件由于其漂亮的界面,而大受用户喜爱,因此,为了紧紧的抓住用户的心,在一些软件的开发过程中,项目组有一些专门的美工来美化软件的界面。在本次设计的过程中,各个GUI部件的功能图如图4所示。

主 界 面 打开文件 播放 歌词显示 播放列表 打开文件 音量控制 播放暂停 停止 上一曲 下一曲 显示歌词 显示列表 图4 播放器各GUI部件功能图

GUI界面的整体布局按照个人习惯,结合一定的美感,设计出来的。虽说不是显得很大气,不过也还算是眼前一亮。基本功能键全部安排在主界面,播放器GUI整体界面效果图如图5所示。

图5播放器GUI界面效果图

8

按钮的代码设计是指按钮功能的代码实现,在本次设计的“音乐播放器”中,由于按钮功能是软件的控制台,播放、暂停、上一曲、下一曲、停止、歌词显示、播放列表显示、音量调节、添加播放文件都需通过按钮,所以,按钮功能也是一个非常需要注意的地方。本次设计主要采用QT中信号与槽机制,及通过发送信号,来进入到相关的处理步骤中,完成播放器的功能。由于软件的开发使用的语言是C++,C++是具有良好的面向对象编程功能的语言,其强大的类的机制,结合QT中的信号与槽机制,实现通信。从而降低了本款软件的开发难度。也减少了软件开发过程中出错的机率。

9

4 详细设计

整个设计的核心主要借助KDE中的PHONON库。而phonon的架构主要是以下三个部分:

1)media object其主要用来管理多媒体来源,提供基本的播放控制 2)sinks多媒体输出,接受media object来的数据,并接受其控制播放,而由sink来处理这些多媒体

3)paths用来连接media object与sink。 4.1 主界面设计

播放器打开后,首先用户接触的是播放器的主体界面,以下是界面的具体代码实现:

//设置窗口基本属性

setWindowTitle(tr(\音乐播放器\

setWindowIcon(QIcon(\从资源文件中招图标 setMinimumSize(400, 200);

setMaximumSize(400, 200);//最大最小设置为一样,代表不改变播放器 窗口的大小

//创建媒体对象

media_object = new Phonon::MediaObject(this); Phonon::AudioOutput *audio_output = new

Phonon::AudioOutput(Phonon::MusicCategory, this);

Phonon::createPath(media_object, audio_output);//绑定源和接收器

//关联媒体对象的tick信号来更新播放时间的显示 connect(media_object, SIGNAL(tick(qint64)), this,

SLOT(UpdateTime(qint64))); //创建顶部标签

top_label = new QLabel(tr(\

href=\\\ http://weibo.com/u/3010837085?topnav=1&wvr=5\

top_label->setTextFormat(QT::RichText);

top_label->setOpenExternalLinks(true);//运行点击进入外部链接 top_label->setAlignment(QT::AlignCenter);

10

//创建控制播放进度的滑块

Phonon::SeekSlider *seek_slider = new Phonon::SeekSlider(media_object,

this);

//设置显示时间的标签

QToolBar *widget_bar = new QToolBar(this); time_label = new QLabel(tr(\ time_label->setToolTip(tr(\当前时间/总时间\ time_label->setAlignment(QT::AlignCenter);

//QSizePolicy类是描述水平和垂直修改大小策略的一种属性

time_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);// 平方向上尺寸可扩展,水平方向已固定 //播放列表开启控制图标

PLAction = new QAction(tr(\

PLAction->setShortcut(QKeySequence(\设置开启播放列表的快 捷键为F4

PLAction->setToolTip(tr(\播放列表(F4)\

connect(PLAction, SIGNAL(triggered()), this, SLOT(SetPlayListShown()));//链接触发信号

//桌面歌词显示开启控制图标

LRCAction = new QAction(tr(\

LRCAction->setShortcut(QKeySequence(\设置开启桌面歌词的快 键为F2

LRCAction->setToolTip(tr(\桌面歌词(F2)\

connect(LRCAction, SIGNAL(triggered()), this, SLOT(SetLrcShown())); //将上面2个action和1个widget添加到工具栏,默认的添加方式为水 平方向添加

widget_bar->addAction(PLAction); widget_bar->addSeparator(); widget_bar->addWidget(time_label); widget_bar->addSeparator(); widget_bar->addAction(LRCAction); widget_bar->addSeparator(); ????

QLabel *label = new QLabel(this);

捷水

11

label->setMaximumSize(30,30);

label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); label->setScaledContents(true);

label->setPixmap(QPixmap(\ //将以上部件添加到工具栏 tool_bar->addWidget(label); tool_bar->addAction(play_action); tool_bar->addAction(stop_action);

tool_bar->addAction(skip_backward_action); tool_bar->addAction(skip_forward_action); tool_bar->addWidget(volume_slider); tool_bar->addAction(open_action);

// tool_bar->addSeparator(); //自己加的,加一条竖线 tool_bar->addAction(ReturnAction); tool_bar->addAction(closeAction);

tool_bar->setAllowedAreas(QT::TopToolBarArea |

QT::BottomToolBarArea); //创建主界面管理器

QVBoxLayout *main_layout = new QVBoxLayout; main_layout->addWidget(top_label); main_layout->addWidget(seek_slider); main_layout->addWidget(widget_bar); main_layout->addWidget(tool_bar); setLayout(main_layout); ????

以上代码中,通过定义两个QToolBar,一个是tool_bar,另一个是widget_bar,将一些按钮添加到这个类似容器的部件中,另外,最后创建一个主界面管理器,这些措施减低了布局设计的一些复杂性。主界面的实际效果如图6所示。

12

图6 播放器主界面图

4.2打开文件设计

对于一个播放器,添加歌曲功能是最重要的。 //设置添加音乐文件动作

QAction *open_action = new QAction(this); open_action->setIcon(QIcon(\ open_action->setText(tr(\播放文件(Ctrl+O)\ open_action->setShortcut(QKeySequence(\ open_action->setEnabled(true);

connect(open_action, SIGNAL(triggered()), this, SLOT(OpenFile()));

如果我们点击播放器上的添加文件按钮,其则发送一个信号triggered(),在C++中,消息就是成员函数的调用[11]。其则会进入到以下的槽函数中执行相关的代码,从而实现添加本地音频文件的目的;

void MyWidget::OpenFile() {

//可以同时打开多个音频文件

QStringList list = QFileDialog::getOpenFileNames(this,tr(\\

if(list.isEmpty()) return;

//获取当前媒体源列表的大小 int index = sources.size();

13

*.wma *.wmv)\

foreach(QString string, list) {

Phonon::MediaSource source(string); sources.append(source); }

if(!sources.isEmpty()) {

//如果媒体源列表不为空,则将新加入的第一个媒体源作为当前媒体源 meta_information_resolver->setCurrentSource(sources.at(index)); } }

通过调用QT中相关的类,默认打开当前文件夹的上一层目录,也可手动打开其他文件夹目录,添加歌曲。将添加的音频文件存放到播放列表中,如果点击播放按钮,则默认播放播放列表的第一首歌曲。以下为实际效果图如图7所示。

图7 播放器添加歌曲效果图

4.3播放歌曲设计

播放歌曲是“音乐播放器”的灵魂所在,将添加的歌曲通过播放器播放出来。

//设置播放动作

QToolBar *tool_bar = new QToolBar(this);//该构造函数没有写入文字 tool_bar->setFloatable(true); play_action = new QAction(this);

play_action->setIcon(QIcon(\ play_action->setText(tr(\播放(F5)\

play_action->setShortcut(QKeySequence(\播放的快捷键位F5

14

connect(play_action, SIGNAL(triggered()), this, SLOT(SetPaused()));

单击播放按钮(快捷键为F5),利用QT中的信号与槽机制,发送信号

triggered(),进入到以下的槽函数setpaused()中,执行具体的播放动作。 void MyWidget::SetPaused() {

if(media_object->state() == Phonon::PlayingState) { media_object->pause(); } else

media_object->play(); }

如果播放器的当前状态为正在播放歌曲,则单击该按钮的动作为播放歌曲,其实现的实际效果图(暂停)如图8所示。

图8 播放器暂停播放效果图

否则,则播放器进入到播放状态,其效果图如图9所示。

图9播放器播放歌曲效果图

15

4.4 播放上一首或下一首歌曲设计

几乎每一个播放器都有播放上一曲或下一曲的功能,本款软件也不例外,以下为播放上一曲的具体代码实现。

//设置上一首动作

skip_backward_action = new QAction(this);

skip_backward_action->setIcon(QIcon(\ skip_backward_action->setText(tr(\上一首(Ctrl+Left)\ skip_backward_action->setShortcut(QKeySequence(\ connect(skip_backward_action, SIGNAL(triggered()), this, SLOT(SkipBackward()));

由于QT中的信号与槽机制,播放器按下按钮之后,发送triggered()信号,则其进入到槽函数中执行相关动作: //播放上一首歌曲

void MyWidget::SkipBackward() {

lrc->stop_lrc_mask();

int index = sources.indexOf(media_object->currentSource()); media_object->setCurrentSource(sources.at(index - 1)); media_object->play(); }

如此,实现播放上一曲的功能。播放下一曲也差不多,其代码为:

//设置下一首动作

skip_forward_action = new QAction(this);

skip_forward_action->setIcon(QIcon(\ skip_forward_action->setText(tr(\下一首(Ctrl+Right)\ skip_forward_action->setShortcut(QKeySequence(\

connect(skip_forward_action, SIGNAL(triggered()), this, SLOT(SkipForward())); 其槽函数为:

//播放下一首歌曲

void MyWidget::SkipForward() {

lrc->stop_lrc_mask();

int index = sources.indexOf(media_object->currentSource());

16

media_object->setCurrentSource(sources.at(index + 1)); media_object->play(); }

4.5 音量控制设计

音量控制是一个播放器必不可少的组成部分,音量过大或是过小,都会对我们欣赏美妙的音乐产生负面的影响。因此,控制适当的音量输出,是我们在欣赏美妙的音乐的前必须经历的步骤。以下是其具体代码实现:

//音量控制部件

Phonon::VolumeSlider *volume_slider = new

Phonon::VolumeSlider(audio_output, this);

volume_slider->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);

至此,我们的播放器的基本功能实现代码已经完成,其他一些不是很重要的代码就不在此赘述。

17

结 论

在各位老师的悉心指导、同学们的无私帮助和自己的辛苦努力下,我大体上完成了“音乐播放器”软件的开发,不过由于时间仓促,加之经验还不是很足,可能仍存在着许多的不足,一些功能还没有实现,比如这个播放器不能实现在线播放,如果当前播放的歌曲的歌词不存在,不能在网上搜索歌词以及下载歌词到本地等,总之,整个播放器还有许多功能需要进一步完善和改进。

经过对本次毕业设计有始有终的设计和开发,使我在大学学到的知识和知识的应用更加熟练,同时,在这个过程中,我也学习到了许多的新知识,并将这些新知识运用到本次“音乐播放器”的设计过程中,从而能达到学以致用的效果。

在本次程序设计的过程中,我体会到了只有真正的实践才能牢牢掌握知识,同时,我认识到,光靠学校教材上的知识在现实生活中是远远不够的,只有更多的学习新知识,紧跟知识发展潮流的脚步,切实做到理论与实践相结合,才能达到真正意义上的学以致用。我在本次程序的设计中,由于开始把握整体框架,细化流程做的不是很好,中间走了很多的弯路。这使我认识到,在以后的生活中、工作中,遇到问题时,一定要把握好整体框架,将问题从上到下分解,一步一步脚印,这样才能少走弯路,更好的解决问题。

18

参考文献

[1] 田淑清全国计算机等级考试二级教程--C语言程序设计[M].北京:高等教育

出版社,2008:1

[2] 袁慧梅,宋宇.基于CPLD的MIDI音乐播放器的设计[J].北京,首都师范

大学,2005:2

[3] 黄振杰,卢小冰.基于AT89S52单片机的多功能音乐播放器[J].广州,华南

农业大学,2009:1-4

[4] 许谨. 基于Android平台音乐播放器的设计与实现[J].北京:北京邮电大学,

2011:1-4

[5] Andrew Koenig.C陷阱与缺陷[M].北京:人民邮电出版社,2008:121 [6] 林华,张新林.大学计算机基础教程[M].北京:人民邮电出版社,2007:

234-235

[7] 宫虎波等.Linux编程从入门到精通[M].北京:化学工业出版社,2009:175 [8] Peter Van Der Linden. C专家编程[M].北京:人民邮电出版社,2008:243-244 [9] Andrew Koenig Barbara Moo. C++沉思录[M].北京:人民邮电出版社,

2008: 1

[10] 利普曼,加.劳乔.C++ Primer[M].北京:人民邮电出版社,2006:28 [11] 周学毛. 新编C语言程序设计教程[M].西安:西安电子科技大学出版社,

2008:258

[12] Kenneth A.Reek.C和指针[M].北京:人民邮电出版社,2008

[13] Amarjot Singh; Ketan Bacchuwar; Akash Choubey; Srikrishna Karanam;

Devinder Kumar.An OMR Based Automatic Music Player.Proceedings of 2011 3rd International Conference on Computer Research and Development(ICCRD 2011) VOL.01[J].2011

19

附 录

#include \ #include \ #include \ #include \ #include #include #include #include #include #include

#include #include #include

#include #include #include

#include #include

MyWidget::MyWidget(QWidget *parent) : QWidget(parent),

ui(new Ui::MyWidget) {

ui->setupUi(this); InitPlayer();

// this->setWindowFlags(Qt::FramelessWindowHint); }

MyWidget::~MyWidget() {

delete ui; }

void MyWidget::paintEvent(QPaintEvent *event) {

QPainter painter(this);

painter.drawPixmap(0,0,this->width(),this->height(),QPixmap(\)); }

//初始化播放器

void MyWidget::InitPlayer() {

//设置窗口基本属性

setWindowTitle(tr(\音乐播放器\));

setWindowIcon(QIcon(\));//从资源文件中招图标

20

setMinimumSize(400, 200);

setMaximumSize(400, 200);//最大最小设置为一样,代表不改变播放器窗口的大小 //创建媒体对象

media_object = new Phonon::MediaObject(this);

Phonon::AudioOutput *audio_output = new Phonon::AudioOutput(Phonon::MusicCategory, this);

Phonon::createPath(media_object, audio_output);//绑定源和接收器 //关联媒体对象的tick信号来更新播放时间的显示

connect(media_object, SIGNAL(tick(qint64)), this, SLOT(UpdateTime(qint64))); //创建顶部标签

top_label = new QLabel(tr(\ href=\\\

http://weibo.com/u/3010837085?topnav=1&wvr=5\ top_label->setTextFormat(Qt::RichText);

top_label->setOpenExternalLinks(true);//运行点击进入外部链接 top_label->setAlignment(Qt::AlignCenter); //创建控制播放进度的滑块

Phonon::SeekSlider *seek_slider = new Phonon::SeekSlider(media_object, this); //设置显示时间的标签

QToolBar *widget_bar = new QToolBar(this); time_label = new QLabel(tr(\), this); time_label->setToolTip(tr(\当前时间/总时间\)); time_label->setAlignment(Qt::AlignCenter);

//QSizePolicy类是描述水平和垂直修改大小策略的一种属性

time_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);//水平方向上尺寸可扩展,水平方向已固定 //播放列表开启控制图标

PLAction = new QAction(tr(\), this);

PLAction->setShortcut(QKeySequence(\));//设置开启播放列表的快捷键为F4 PLAction->setToolTip(tr(\播放列表(F4)\));

connect(PLAction, SIGNAL(triggered()), this, SLOT(SetPlayListShown()));//链接触发信号 //桌面歌词显示开启控制图标

LRCAction = new QAction(tr(\), this);

LRCAction->setShortcut(QKeySequence(\));//设置开启桌面歌词的播放列表快捷键为F2

LRCAction->setToolTip(tr(\桌面歌词(F2)\));

connect(LRCAction, SIGNAL(triggered()), this, SLOT(SetLrcShown()));

//将上面2个action和1个widget添加到工具栏,默认的添加方式为水平方向添加 widget_bar->addAction(PLAction); widget_bar->addSeparator();

widget_bar->addWidget(time_label); widget_bar->addSeparator();

widget_bar->addAction(LRCAction); widget_bar->addSeparator();

21

本文来源:https://www.bwwdw.com/article/aibg.html

Top