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

2019-05-18 20:43

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


基于Phonon库的音乐播放器设计 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:各工种安全操作规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: