QPushButton类型的换肤控件PbChange在窗口的最下方位置,用于窗体皮肤的切换,初始值为默认第一张背景,可读写。
2.2 项目框架设计
这个软件设计的目的就是制作一个能够播放音频的播放器。通过创建带有Phonon模块的工程,对音乐播放器进行设计,主要用到模块中的MediaObject (管理媒体源) AudioOutput (连接物理设备)SeekSlider( 实现进度条)QList (实现资源添加), 在播放的文件方面,可播放本地的音频文件在功能方面,它具备一些基本的音乐操作处理功能(暂停、播放、音量调节、拖动、停止等)。
设计该播放器涉及到的几种重要类:
MediaObject Class :主要提供一个能够处理媒体播放的介面。 MediaObject可说是处理多媒体档案最基本的一部份,它接受并管理来自于MediaSource的媒体档案,而媒体播放、暂停与停止都是由它来控制。而在此之前,media物件必须要与output node连接,这个nodes主要将媒体输出至底层的硬体,例如音效卡或显示卡等,而所需要的output node则是根据多媒体的内容而所不同。目前Phonon有两种output node:AudioOutput声音播放,VideoWidget影像播放。
AudioOutput Class :主要是用来把多媒体的声音送到声音输出装置。所以它能够经由类似喇叭等输出装置来播放,多媒体资料的来源必须要经过Phonon::createPath()由MediaObject连接。
SeekSlider Class :提供一个可滑动的slider来设定多媒体串流播放的位置,即播放进度条,所以它会连接到MediaObject,并控制串流目前的位置。
VolumeSlider Class :提供可以控制声音装置音量的widget,它会连接到MediaObject,以此控制音量输出的大小。
QAction Class :QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命令。本播放器通过QWidget::addAction()函数将Actions添加到窗口部件上。
5
2.3 系统实现
首先,本音乐播放器具备的功能图解:
播放
暂停 停止
基本操作 音量调节
进度调节 功能 打开本地文件
播放时间显示 其他操作 换肤
下面就各主要功能分版块介绍:
1.在本播放器开发中,使用中文编码,在main函数中包含头文件 #include
2.用到的Phonon媒体变量: 媒体变量名规划 类型 变量名 概述 Phonon::MediaObject * musicObject 媒体对象 Phonon::MediaObject * audiooutput 音频输出 Phonon::SeekSlider* seekSlider 播放进度滑竿 Phonon::VolumeSlider* volumeSlider 音量调节滑竿 QList
3,步骤及功能实现代码:
新建一个空的Qt项目文件,继承自QMainWindow,添加main函数。Phonon的工作机制是使用MediaSourse即源文件,通过Path连接到AudioOutput,最后使用AudioOutput将数据发送到相关物理设备。所以,如果要使用Phonon的相关媒体变量,需要在Pro文件中添加一行代码:QT += phonon
接着,在头文件中需要包含的有:
#include
私有成员变量:
void setupActions(); void setupMenus(); void setupUi();
Phonon::SeekSlider *seekSlider; //进度条滑块 Phonon::MediaObject *mediaObject; //播放媒体界面 Phonon::MediaObject *metaInformationResolver; Phonon::AudioOutput *audioOutput; //音频输出 Phonon::VolumeSlider *volumeSlider; //音量调节滑竿 QList
7
QAction *addFilesAction; //添加文件按钮 QLCDNumber *timeLcd; //显示屏 QTableWidget *musicTable; //音乐表格 QPushButton *PbChange; //换肤按钮 int myRand(int max); //随机数
int miGrade;
下面就各功能分块介绍: 1, 添加文件功能
addFilesAction = new QAction(tr(\添加文件\
connect(addFilesAction, SIGNAL(triggered()), this, SLOT(addFiles())); void MainWindow::addFiles() {
QStringList files = QFileDialog::getOpenFileNames(this, tr(\选择文件\添加文件对话框
QDesktopServices::storageLocation(QDesktopServices::MusicLocation));//文件地址
if (files.isEmpty())//如果文件为空,返回 return;
int index = sources.size(); foreach (QString string, files) {
Phonon::MediaSource source(string); sources.append(source); }
metaInformationResolver->setCurrentSource(sources.at(index)); }
将添加文件按钮加入到菜单中:
void MainWindow::setupMenus()//设置菜单
8
相关推荐: