QT音乐播放器

合集下载

【计算机应用】_音乐播放器_期刊发文热词逐年推荐_20140724

【计算机应用】_音乐播放器_期刊发文热词逐年推荐_20140724

科研热词 音乐播放器 歌词 mp3 笔记本电脑 播放器 卡拉ok mp3播放器 .com 鼠标右键 音箱 音乐软件 音乐盒 音乐播放功能 青年人 记事本 触摸技术 视频模块 背景音乐 网络时代 移动设备 碱性电池 电池电源 用户操作 液晶电视 流行音乐 智能手机 智能 春节 时间 旋转设计 文件拷贝 数码播放器 播放软件 播放器软件 摄像头 掉线 手机 影音设备 影音 审美观 媒体播放器 央视联欢晚会 声音 块空间 在线播放 台式机 创新 供电方式 习惯性 下载地址 下载功能 《千千静听》
推荐指数 3 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
科研热词 音乐文件 音乐播放器 音乐 身体 英特尔公司 耳机 美光科技公司 纳米 清凉油 消费电子产品 智能手机 文件拷贝 播放器 手机 慢跑 情报 存储容量 媒体播放器 大学生活 国庆 世博会 qtopia qt/embedded linux psp pop nand闪存 mp3音乐播放器 mp3播放器 ftp网络
2008年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
推荐指数 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2013年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
科研热词 播放器 版本 插件 发烧友 音乐播放器 音乐 附加功能 转播 路由器 资源丰富 终端 横向评测 智能手机 手机 历史记录 内置 兼容性 全能 mp3 app

竞赛方案分析报告

竞赛方案分析报告

竞赛方案分析报告1. 竞赛概述本次竞赛是针对软件开发领域的一次竞赛,旨在展示参赛人员的编程技能、团队协作能力和解决实际问题的能力。

竞赛内容主要包括软件开发、测试、质量控制等方面,参赛者可以自由选择编写的项目类型和工具。

2. 参赛方案分析2.1 竞赛方案一第一支参赛方案选择了Java编程语言,选择了开源的Spring框架来实现应用,通过Github作为版本控制工具和协作工具。

参赛团队成员之间积极协作,完成了项目的绝大部分内容。

虽然在测试过程中有些小问题,但是整体来说该方案表现突出。

评价:该方案突出了团队协作和应用开发的能力,但是在测试环节和一些细节上还需要进一步提高。

2.2 竞赛方案二第二支参赛方案选择了Python编程语言,使用Django框架实现了一个社交网站的应用。

该团队对代码和文档的管理比较规范,通过GitLab来进行版本控制和协作。

在测试环节中,该方案表现不俗,发现并解决了不少问题。

评价:该方案有一定的创意和技术含量,但是团队成员间的协作能力和项目管理还有待提高。

2.3 竞赛方案三第三支参赛方案选择了C++编程语言,使用了Qt框架来实现一个音乐播放器应用。

该团队对代码和文档的管理非常规范,使用了Sourcetree和Markdown来进行版本控制和协作。

在测试环节中,该方案表现出色,发现并解决了所有问题,代码实现和文档说明也非常完整。

评价:该方案在技术实现和团队协作能力方面表现优秀,是本次竞赛的佼佼者。

3. 竞赛总结通过对参赛方案的分析,我们可以看到,每一个参赛方案都有其优势和不足之处。

参赛者在本次竞赛中展现了自己的编程技能和协作能力,同时也发现了自己的一些不足之处。

通过总结竞赛经验,我们希望能够提高参赛者的技术水平和团队协作能力,为未来的发展打下坚实的基础。

图形用户界面编程教学课件ppt

图形用户界面编程教学课件ppt
详细描述
界面风格:GUI程序的界面风格包括色彩、字体、间距、大小等视觉元素,这些元素共同决定了程序的整体外观。
图形用户界面编程进阶
04
多线程与图形渲染
多线程概述
多线程的概念、多线程的优点和缺点、线程的生命周期和线程同步。
界面响应性的定义、界面响应性的重要性、影响界面响应性的因素。
界面响应性与优化
界面响应性概述
介绍优化界面响应性的策略,包括减少UI操作的复杂度、使用缓存、优化数据加载等。
界面优化策略
通过实际案例来具体说明如何优化界面响应性。
实际案例分析
跨平台需求分析
可访问性设计理念
跨平台应用可访问性设计
跨平台与可访问性
图形用户界面编程实践
05
目的:通过制作简易计算器,让学生了解图形用户界面编程的基本概念、界面设计和事件处理方法。
下一步学习建议
通过实践来巩固所学知识,可以在实际项目中应用所学内容,加深对前端技术的理解和掌握。
加强实践
对于已经学习的前端框架,可以深入学习其原理、机制和最佳实践,提高自己的框架技能水平。
深入学习框架
可以学习后端技术,了解前后端的交互和数据流动,更好地掌握前端技术的实际应用。
学习后端技术
可以通过阅读相关技术文章、参加技术大会等方式,关注前端技术的最新动态和发展趋势。
GUI设计工具
介绍了一些常见的GUI设计工具,如Sketch、Figma、Adobe XD等,以及这些工具在GUI设计中的应用。
图形用户界面编程核心技术
03
பைடு நூலகம்
01
界面布局与控件
02
03
04
总结词:事件处理和交互逻辑是GUI程序的重要组成部分,它们使得程序能够响应用户操作并实现交互。

基于Qt4的网络视频播放器简介

基于Qt4的网络视频播放器简介

基于Qt4的⽹络视频播放器简介基于Qt4的⽹络视频播放器简介⼀、l软件功能简介及⽤法该播放器可以在Windows、Linux和s3c2440开发板上播放各种格式的多媒体⽂件,以及流媒体⽹络视频⽂件。

不管在哪个平台下运⾏,源代码均不需要修改,只需在相应系统环境下重新编译即可。

如果要在x86(Windows和Linux)上运⾏,需要把⼯程⽬录下的widget_x86.ui复制⼀份,名为widget.ui,如果要在开发板上运⾏,则应把⼯程⽬录下的widget_s3c2440.ui同样复制⼀份,名字也为widget.ui,因为该⼯程默认是使⽤widget.ui⽂件进⾏编译的。

如果拷贝到其它机器上编译,可能会出现编译出错的情况,此时需要修改Qt⼯程Projects的“Build directory”的路径,再Rebuild 即可。

播放器在Windows下运⾏画⾯如下图:该播放器的⽤法与⼤多数视频播放器⼀样。

具备播放,暂停,停⽌,上⼀⾸,下⼀⾸,播放进度显⽰和调节,⾳量调节,播放速度设置等基本功能。

【速度设置】按钮⽤来设置播放的速度,正常速度值为0.0。

【时间跳转】按钮⽤来跳转置指定的时间进度。

另外,播放器右侧还有两个播放列表,分别是本地播放列表和⽹络播放列表,⽤来播放本地⽂件和流媒体http服务器上的⽂件。

【打开】按钮⽤来添加本地⽂件,【删除】按钮⽤来删除本地播放列表的⼀项。

⽹络播放列表项不可删除。

在播放的同时,会实时显⽰多媒体⽂件的总播放时间和当前播放的进度时间,播放百分⽐(%),以及当前电脑的时间。

同时播放器窗⼝标题会显⽰正在播放的⽂件名。

⼆、播放器的实现1.单机播放的实现:我控制mplayer播放视频是通过mplayer所谓的slave模式实现的。

如在终端下输⼊:mplayer '/home/linux/01.mp3' -quiet –slave,体验下效果。

现在来探讨⼀下slave模式:所谓的slave模式,就是mplayer在运⾏过程中能够接收⽤户的输⼊命令⾏,具体⽀持哪些命令⾏,能够通过mplayer -input cmdlist这条命令来得到,在Mplayer源码的slave.txt中也有对这些命令有详细的讲解。

Qt使用QMediaPlayer+QVideoWidget播放视频文件

Qt使用QMediaPlayer+QVideoWidget播放视频文件

Qt使⽤QMediaPlayer+QVideoWidget播放视频⽂件环境:QT版本:5.6.2开发环境:VS2013系统版本:windows 7 64bit前⾔我们需要⽤QT播放视频,如制作⼀个视频播放器等。

1.代码实现1.1 pro添加QT += multimedia multimediawidgets1.2 头⽂件添加1//要包含下⾯的两个⽂件,必须在.pro⽂件中添加 QT += multimedia multimediawidgets2 #include <QMediaPlayer>3 #include <QVideoWidget>4 #include <QMediaPlaylist>1.3 代码实现1 QWidget *widget = new QWidget;2 QVBoxLayout *layout = new QVBoxLayout;34 QMediaPlayer* player = new QMediaPlayer;5 QVideoWidget* videoWidget = new QVideoWidget;6 QMediaPlaylist* playlist=new QMediaPlaylist;78 videoWidget->setAspectRatioMode(Qt::IgnoreAspectRatio);9 videoWidget->setFullScreen(true);1011 layout->addWidget(videoWidget);12 widget->setLayout(layout);1314 playlist->clear();15 playlist->addMedia(QUrl::fromLocalFile("C:\\a.mp4"));16 player->setPlaylist(playlist);1718 QFile file("C:\\a.mp4");19if(!file.open(QIODevice::ReadOnly))20 qDebug() << "Could not open file";2122 player->setVideoOutput(videoWidget);23 player->setPlaylist(playlist);2425 widget->showFullScreen();26 player->play();2.效果3.注意事项3.1 部署在其他电脑上部署的时候需要注意包含a.mediaservice pluginb.QT5MULTIMEDIA.DLLQT5NETWORK.DLLQT5GUI.DLLQT5CORE.DLLc.QT5MULTIMEDIAWIDGETS.DLLQT5MULTIMEDIA.DLLQT5WIDGETS.DLLQT5GUI.DLLQT5CORE.DLLQT5OPENGL.DLL3.2 播放⽆图像播放⽆图像,并报错:DirectShowPlayerService::doRender: Unresolved error code 80040266原因:Qt 中的多媒体播放,底层是使⽤DirectShowPlayerService,所以安装⼀个DirectShow解码器,例如LAV Filters,就可以解决运⾏出错问题。

【计算机应用】_mp3歌曲_期刊发文热词逐年推荐_20140725

【计算机应用】_mp3歌曲_期刊发文热词逐年推荐_20140725
2008年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
科研热词 电脑 歌曲 拷贝 mp3歌曲 mp3播放机 mp3 音质 音乐软件 音乐播放器 自动排序 耳机 网络时代 网吧 管理器 硬盘 码率 歌词 文件窗口 文件丢失 文件 播放软件 搜索功能 容量 块空间 在线播放 同步 卡拉ok 占用空间 下载地址 下载 《千千静听》 wma文件 windows资源管理器 mp3随身听 mp3播放器 kugoo http .com
科研热词 mp3播放器 耳机 维修 歌曲数据库 歌曲 校园 杂音 小波多分辨率分析 复制 基于fdica的盲源分离 卷积信号盲源分离 qtopia qt/embedded linux ftp网络
推荐指数 3 1 1 1 1 1 1 1 1 1 1 1 1 1
2011年 序号 1 2 3 4
2011年 科研热词 音量 音乐声 网上下载 mp3歌曲 推荐指数 1 1 1 1
推荐指数 3 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2009年 序号 1 2 3 4 5
科研热词 电脑病毒 格式化 专家 下载 mp3播放器Leabharlann 推荐指数 1 1 1 1 1
2010年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14
2013年 序号 1 2 3 4 5 6 7 8 9 10 11 12
2013年 科研热词 mp3 音乐播放器 附加功能 资源丰富 横向评测 数据消重 手机 存储架构 声学指纹 历史记录 hadoop app 推荐指数 2 1 1 1 1 1 1 1 1 1 1 1

CQt开发基础与进阶教程PPT模板

语音特征提取与识别模型训练可以并行处理,加速训 练速度
02
CQT开发基础
CQT开发环境搭建
操作系统及IDE选择与安装
介绍不同操作系统下CQT的开发环境搭建,以及常用IDE的安装和设置方法。
开发环境验证
详细说明如何验证CQT开发环境是否搭建成功,包括运行简单的程序进行验证等 。
CQT基本语法
1 2
运行时出现错 误
需要仔细检查应用程序 的运行日志,寻找可能 存在的问题。
界面不美观
需要对应用程序的界面 进行适当的调整和优化 ,以提升用户体验。
软件崩溃
需要对应用程序进行压 力测试和内存优化,以 避免软件崩溃问题的出 现。
06
CQT开发未来趋势展望
CQT开发技术发展现状
CQT开发技术发展历程
从早期的版本到现在的最新版本,重点介绍每个版本的功能 和性能提升。
安装顺序错误
环境变量配置错误
在安装CQT开发环境时,需要按照一定的 顺序安装组件,否则会出现问题。
在配置环境变量时,需要注意CQT的安装 路径以及其他相关环境变量的配置。
代码编译常见问题
总结词
在编写和编译CQT代码时,需要注意的一 些常见问题和解决方案。
链接错误
在链接程序时,需要注意目标文件的路径 和名称,以及库的加载顺序。
一种基于语音识别、语音特征分析和语音合成等技术实现的 语音交互系统
CQT的起源与发展
早期的语音识别技术
基于规则和统计的方法,如DTMF、MFCC等
深度学习在语音识别领域的应用
端到端、CNN、RNN等模型的应用,以及语音数据的大量增长
CQT的特点与优势
特点 端到端模型,可减少复杂度和提高效率

如何搭建一个自己的音乐播放器-使用腾讯云轻量应用服务器搭建YesPlayMusic网易云播放器

如何搭建一个自己的音乐播放器-使用腾讯云轻量应用服务器搭建YesPlayMusic网易云播放器搭建自己的音乐播放器可以使用腾讯云轻量应用服务器,并以YesPlayMusic作为网易云音乐的播放器。

以下是大致的步骤:
1.购买腾讯云轻量应用服务器:在腾讯云官网购买适合你需求的轻量应用服务器,并选择一个合适的地域部署。

2.配置服务器环境:登录到轻量应用服务器的管理界面,配置操作系统、网络和安全等相关设置。

3.安装运行环境:根据服务器的操作系统,安装必要的软件和环境,例如Node.js 和Nginx。

4.获取YesPlayMusic源代码:从YesPlayMusic的GitHub仓库中获取最新的源代码。

5.配置数据库:创建一个数据库实例,用于存储音乐播放器的数据。

可以使用MySQL或其他合适的数据库。

6.安装依赖并配置:在服务器上安装YesPlayMusic所需的依赖,并进行相应的配置。

你需要编辑配置文件,设置数据库连接等信息。

7.启动YesPlayMusic服务:运行相应的命令,启动YesPlayMusic服务,确保
一切正常。

8.配置域名和SSL证书:为你的音乐播放器配置一个域名,并申请并配置SSL
证书,以提供安全的HTTPS访问。

9.配置Nginx反向代理:使用Nginx配置反向代理,将用户的请求转发到YesPlayMusic服务。

10.上传音乐文件:将你喜欢的音乐文件上传到服务器,并配置YesPlayMusic
以扫描并展示这些音乐。

11.测试和优化:测试你的音乐播放器是否正常工作,进行必要的调试和优化。

基于QT与Ffmpeg硬件解码功能多媒体播放器

J,/ 2 4视频标 准 。 、T H.6
2 硬 件 设 计 及 实 现
本 课 题 采 用 台湾 升 迈 科 技 … 的 G 8 8 适 合 M 10, 用 于 H.6/ E 4 JE 2 4 MP G一 /P G编解 码 , 特别是 互联 网
1 系统 整体 设 计
整 个 系统具有 图像 接受 、 图功 能 、 频实 时显 截 视
模块 组 成 , 1 模 块 分别 是 : 这 3个 电源 模 块 、 频 模 视 块 、 频 模 块 、 A F A H、 te t 块 、 口模 音 R M、 L S Ehme 模 串
示、 视频播放功能, 视频录像 、 存储功能。图像采集
2 A a e f eeo . c d my o T lc mmu i t n e h oo , h n h i 0 0 2 C n ) nc i s T c n lg S a g a 2 0 3 , ha a o y i
Ab ta t An it d c o f a mut da pa e n a pp l e wi ls o o i h u cin o sr c : nr u t n o l me i ly r i iei r e s rb tw t te fn t f o i i n e h o
2 1 年第5 02 期
文 章 编 号 :0 9—25 2 1 0 0 7 0 10 52(02)5— 0 7— 2 中 图 分 类 号 :P 1 . T 3 15 文 献 标 识 码 : A
基于 Q T与 Fm e 件 解 码 功 能 多媒体 播 放 器 f pg硬
廖 礼江 ,袁 建 涛
r s s i e h oo a e a p i n t e i d s ils co .Un e e GM8 a d r l t r w t t n mis n tc n l g r p l d i h n u t a e tr a o y e r d rt h 0 h r wa e p a o m i 1 8 f h

什么音乐播放器歌曲最全不收费?

什么⾳乐播放器歌曲最全不收费? ⽬前不收费的⾳乐软件⽐较少,随着国家对知识产权的重视,制定了⼀系列措施严惩盗版⾏为。

在2018年国家制定《“互联⽹+”知识产权保护⼯作⽅案》创新知识产权的保护⽅式,营造⼀个更将良好的互联⽹⽣态圈。

⽬前⽽⾔不收费的⾳乐软件很少,下⾯详细给⼤家介绍⼀下⼏款⾳乐软件。

⽬前不收费的⾳乐软件有哪些呢?可以说没有,主流的⽹易云⾳乐、百度⾳乐、QQ⾳乐、虾⽶⾳乐、酷狗⾳乐、酷我⾳乐等均收费。

收费主要是两个⽅⾯,⼀是某些歌曲在线听也是需要收费的,⽐如说数字专辑等等;⼆是要下载⼀些特定的歌曲时需要收费或者购买⼀些数字专辑是需要收费,并不是说只要使⽤这些⾳乐软件就会收费。

⾳乐软件⾥的歌曲在线听⼤部分免费的。

⾯对⽬前不收费的⾳乐软件⼏乎没有的现状,有下⾯这种办法可以解决,这⾥以酷狗⾳乐播放器为例⼦,不过只能在安卓端操作,iOS端⽆法实现。

步骤1:在安卓⼿机中打开酷狗⾳乐的⽂件夹,找到⼀个命名为down_c的⽂件夹; 步骤2:打开该⽂件夹,删除⾥⾯的多有缓存⽂件,然后返回酷狗⾳乐主界⾯; 步骤3:打开酷狗⾳乐后,选择⼀⾸需要收费的歌曲,把歌曲完成的听完; 步骤4:回到之前的⽂件夹down_c,这时候会找到⼀个缓存⽂件,将其命名为该歌曲名,将⽂件的后缀改为【歌名+.MP3】即可。

这样点击该⽂件就可以播放歌曲啦。

⾯对⽬前不收费的⾳乐软件⼏乎没有的现状还可以通过⼀些P2P的平台去查找⼀些付费歌曲的下载链接,也就是利⽤主流的BT⽹站和BT搜索引擎⾥获取⾳乐BT种⼦(magnet磁⼒链接)下载后便可以离线播放。

不过不建议使⽤这种⽅法,毕竟要尊重版权,加强保护意识从我做起。

收费主要是两个⽅⾯,⼀是某些歌曲在线听也是需要收费的,⽐如说数字专辑等等;⼆是要下载⼀些特定的歌曲时需要收费或者购买⼀些数字专辑是需要收费,并不是说只要使⽤这些⾳乐软件就会收费。

⾳乐软件⾥的歌曲在线听⼤部分免费的,当然付费⾳乐会有更多的特权,⼤家可以在不同的⾳乐软件的VIP介绍⾥⾯可以找到相关的权益。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、系统概述 这个软件设计的目的就是制作一个能够播放音频的播放器。在播放的文件方面,包括本地的音频文件,也包括网络上的音频文件。在功能方面,它除具备一些基本的音乐操作处理功能(暂停、播放、音量调节、拖动、停止等)外,主要的功能还有用户注册、登录,喜欢,不喜欢,搜索歌曲,模拟电台,根据每个用户的喜欢信息而推荐歌曲等。除了以上所说的客户端的实现,在服务器端要实现用户管理、搜索歌曲、模拟电台、推荐歌曲等模块。

图1.1 播放器的外观 尽管此播放器在稳定性、视觉效果、歌曲库的大小等方面远远不如当今的很多播放软件,但是它具有小巧,长时间听歌后占用硬盘空间小,可以根据每个用户的不同信息进行推荐歌曲,将歌曲分类后以模拟电台的方式给出,搜索歌曲等功能的集合的特点,是一款属于自己的实用的播放器。 此播放器是在Windows操作系统下的QT4集成环境下完成的,QT是跨平台的开发软件,只要将此播放器的代码在其他QT能够运行的平台上重新编译就可以在当前平台上运行。此播放器的客户端的信息是存在XML文件中的,服务器端的数据存于MySql数据库中。

图1.2 程序的主体结构 存放用户信息、歌曲信息(id、歌曲URL、歌名、歌手、类型、歌词URL)、用户的喜欢歌曲 歌曲 歌词 读取 操

播放器客户端 播放器服务器端

网 络 二、需求分析与设计 2.1需求分析 当今的大多数音乐播放器存在一些弊端,如不要求用户注册登录,这使得对于每个用户的喜欢歌曲的信息无法进行统计,对于每个用户不能进行有效的针对性的歌曲推荐;当用户播放网络上的歌曲时,往往是将歌曲下载到本地硬盘,久而久之会占用大量的硬盘空间。 而这个播放器要求用户登录,在使用中,如果播放的是网络歌曲,用户可以对自己喜欢的歌曲进行标记,也可以对自己已经标记过的歌曲取消标记,而用户喜欢的歌曲将存在服务器中,同时也会把喜欢歌曲的信息(歌曲的URL地址,名称,歌手,歌词地址等)记录在本地的XML文件中,当用户使用推荐功能时,服务器端会根据记录的用户的喜欢歌曲的信息再对比其他用户喜欢歌曲的信息进行有针对性的推荐。播放歌曲使用的解码器是QT提供的Phonon类,它可以实现流媒体文件的播放,也就是边下载边播放,而且对于播放中下载的文件不会存储在本地硬盘中,防止了时间长后所占硬盘空间太大的问题。

2.2开发工具 操作系统:Windows XP 开发平台:QT4.7 使用的数据库:MySQL

2.3总体设计 程序应具有的功能: 图2.1 程序具有的功能 其中,基本操作是在本地上进行的,而其他操作是需要和服务器端的数据库联系的。所以在服务器端,需要对客户端发过来的服务请求进行分别处理,而它们主要是以函数的形式完成的。

三、模块具体设计与测试 对于模块的具体设计,我这里是根据图2.1给出的功能的顺寻进行介绍的。 3.1数据库设计 数据库使用的是MySQL,数据库的使用是在服务器端进行的,服务器端程序的编写也是在QT4环境下完成的,为了能够使用数据库,要首先在QT4中对MySQL进行编译,得到MySQL的插件,成功后就可以用了。还有就是大部分歌曲名、歌手等使用的是汉字,所以在QT4中要有包含GBK,在MySQL中也要包含GBK(可以在安装时选择GBK,然后再查找资料,对安装目录中的指定文件进行修改)。 QT4中使用汉字代码:

功能 基本操作 其他操作

上一首 播放 暂停 停止 下一首 打开本地文件

注册、登录 喜欢、不喜欢 搜索歌曲 模拟电台 推荐歌曲

音量、进度调节 时间显示

歌词显示 QApplication::addLibraryPath("./plugins"); QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312")); 其中第一句是针对于程序发布时显示汉字用的,当程序发布时,需要将程序用到的各种DLL文件复制到发布文件夹下,而且如果想显示汉字,还得将qcncodecs4.dll文件放在“./plugins”中,如果想显示图片、图标,就要有QT中imageformats文件夹中的全部内容。 数据库的名称为mymusic,它其中的表有user、song等,如下图,可以看出,除了用户表和歌曲表外,还有四个其他的表,他们是用户自己的表,用来记录各自喜欢的歌曲id信息。

图3.1 mymusic的表 3.1.1用户表 用户表是user,用来存储用户名、密码、用户昵称,用户名用来登录和用户识别,它是user表的主键,密码是用来登录的,用户昵称显示在客户端的标题栏,使程序更加亲切。 下图是user表的结构:

图3.2 user表的结构 3.1.2歌曲表 歌曲表是song表,它里面存储了搜集来的歌曲的相关信息,包括歌曲id、歌曲URL地址、歌曲名、歌手、歌曲类型、歌词URL地址,其中歌曲id是主键。当用户向服务器端发送歌曲请求时,服务器端就会返回歌曲URL地址、歌曲名、歌手、歌词地址等信息,然后客户端就会根据这些地址、信息进行下载、显示等相应的操作。 下图是song表的结构:

图3.3 song表的结构 3.1.3用户自身的表 程序对每个用户创建了一个表名为用户名的表,当用户注册时会自动创建,该表存放的是用户喜欢歌曲相对于song表中的id值,也就是说存放的是用户喜欢的歌曲信息。 下图是用户自身的表的结构:

图3.4 用户自身表的结构 3.2基本操作 基本操作是基于QT自带的Phonon类实现的,Phonon类中定义了基本操作函数、信号、状态等,而且它读取网络音频使用的是流媒体技术,很适合本程序的实现。 图3.5 基本操作的图标 在本程序中,本地存有两个与基本操作相关的XML文件,其中之一是usersong.xml,它其中存的是用户喜欢的歌曲列表的相关信息,包括歌曲在服务器数据库中的id号、歌曲URL地址、歌曲名、歌手、歌词URL地址,当用户选中一首歌曲为喜欢时,将歌曲的相关信息写入此xml文件,当用户对于已经选为喜欢的歌曲标记为不喜欢时,在此xml文件中删除该歌曲的相关信息,对于本地的歌曲则不存储。

图3.6 username.xml的结构 另外一个xml文件是songpos.xml,它里面存储的是用户退出程序时最后播放的用户喜欢的音乐,也就是usersong.xml里面的一首歌曲的位置,从一开始,每当程序启动时,读取songpos.xml文件得到上次最后的喜欢歌曲,重新播放。

图3.7 songpos.xml的结构 当用户退出程序时,在主窗口类的析构函数中有写songpos的操作,流程和一般的写XML的流程一样,加头、创建节点、创建文本、添加字结构等。 由于在很多函数里面要用到对usersong.xml文件的读和写,所以在程序中将对此文件的读和写定义了函数,其中readinformation(int pos)是读取在usersong.xml中位置为pos的歌曲的信息,并将歌曲信息赋值给全局的结构体current,其中current的结构和username.xml文件里面存放的歌曲结构相同;writeinformation()的功能是将当前的音乐信息current存储到usersong.xml文件中的全局变量songpos+1的位置,这个只是在用户选择当前歌曲为喜欢时才会调用;deleteinformation()的功能是在usersong.xml文件中删除当前位置的歌曲信息,也就是当用户选择以前喜欢的歌曲为不喜欢时,为了保持一致性,将删除这条歌曲的信息。 在readinformation函数中,需要首先判断songpos的特殊位置,然后循环到应该读取的节点,之后读取节点中的数据并赋值给current,其中还要判断当前的歌词是否有文件,是否文件名和歌词URL中给出的相同等。 writeinformation函数的实现比较麻烦,因为XML没有插入的功能,所以只能分四步进行:1.打开原文件并读取,创建新根节点,加头部信息,创建新的节点数组等;2.读取先前文件中的songpos位置之前的节点数据并添加给新的根节点;3.添加current中的数据到根节点下;4.读取并添加先前文件中的剩余节点信息到根节点,将根节点连接到文件变量中并写入usersong.xml中。至此完成了改函数。 Deleteinformation函数的实现比较简单,先找到指定位置的节点,然后使用root.removeChild(n)函数即可。

3.2.1上一首 上一首按钮连接了preFile()函数,它的功能是通过prevFile()函数来实现的。在此函数中,有一个特殊情况,就是当当前正是电台播放时,此功能应该是无效的,所以需要判定。对于一般的情况,则读取usersong.xml文件中位置为songpos-1的歌曲信息,赋值给current,然后进行播放,实现上一首功能。

3.2.2播放 此功能比较简单,当点击播放按钮时,隐藏播放按钮,显示暂停按钮,并读取current中的信息,通过Phonon的函数play()实现播放。

3.2.3暂停 此功能也比较简单,当点击暂停按钮时,隐藏暂停按钮,显示播放按钮,调用Phonon中的pause()函数,将播放暂停。

3.2.4停止 当点击停止按钮时,隐藏暂停按钮,让停止按钮变为不可用,调用Phonon的stop()函数,将音乐停止。

3.2.5下一首 当点击下一首按钮时,调用nextFile()函数,并且当歌曲播放完之后会产生一个aboutToFinish()信号,这个时候也会调用nextFile()函数。在此函数中先判断当前是否为模拟电台的播放状态,若是,则发送信息给服务器端,得到下一首的电台播放的歌曲信息,赋值给current,并播放;若不是,则调用readinformation()函数,得到下一首的信息,并播放。

3.2.6打开本地文件 点击打开本地文件会跳出获取本地文件路径和名称的对话框,当用户选中后,因为它是本地文件,会直接把地址赋给播放的对象,而不会经过current结构体,songpos也不会改变,而且由于本地文件不是服务器端提供的,所以喜欢和不喜欢功能不能使用,当播放完后继续播放usersong.xml中的下一首, 下图是点击打开本地文件后的显示情况:

相关文档
最新文档