ubuntu QT5:mp3_player

一.项目设想php

最近刚开始学习QT,准备利用QT作一个音乐播放器。设想的基本功能是,可以播放本地歌曲,能从百度mp3下载制定歌曲,能显示歌词。html

二.进度git

2013.12.03github

http://bbs.qter.org/forum.php?mod=viewthread&tid=629&extra=&page=1  的教程看到了12章完了,对信号与槽,QT的内存管理,主要是定义对象时会定义子对象和父对象(不是C++意义上的继承类),当销毁父对象时,其children()上的全部对象均会被delete.ubuntu

2013.12.05dom

QT上的教程看到17章了,了解到了一个基本的文件对话框的建立方法。另外,要学会上QT网站搜索文档内容。
函数

2014.2.20
tornado

以mute_button(静音按钮)为例,总结下信号连接的方式。
布局

//不直接将clicked与后续信号连接的方式是,后续连接用到了一个本地成员变量player_muted_,于是经过函数过分
学习

connect(mute_button_,SIGNAL(clicked()),this,SLOT(MuteClicked()));
void MyWidget::MuteClicked()
{
  emit ChangeMuting(!player_muted_);
}
//更新播放器的静音状态
connect(this,SIGNAL(ChangeMuting(bool)),player_,SLOT(setMuted(bool)));
//用于实时更新按钮的状态和成员变量player_muted
connect(player_,SIGNAL(mutedChanged(bool)),this,SLOT(SetMuted(bool)))

能够看出,两次信号链接中间是经过QMediaPlayer来过渡的,而其信号能够实时更新按钮的状态。

2014.3.2

基本功能已实现,现对项目进行总结:

Qtcreator自带的demo(player),编译后运行没问题,可是播放音频文件会提示确实Gstreamer缺乏插件,解决方法是去ubuntu软件中心安装Gstreamer的插件。

最终本程序实在http://www.cnblogs.com/tornadomeet/archive/2012/09/23/2699077.html 博主的QT4的基础上借鉴Qtcreator自带的example实现的。下面附截图(未实现歌词功能,主要是以为我本身听歌通常不关注歌词。。)

针对这个项目,有如下几个方面想说一下:

1.以为不足的地方:1)在实现读取音乐文件时,打开音乐文件后没办法直接获取全部音乐文件的详细信息,于是播放列表只是简单的列了歌曲和格式,而没有列歌手时长等信息,并且每首歌曲的时长信息能够经过播放时QMediaplayer的信号来获取:

connect(player_, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64)));

(有知道好办法直接获取全部打开文件的详细信息的同窗,请指教。。)

2.本项目主要是用QTableWidget实现播放列表,而QWidget实现主界面,而使用QMediaPlayer和QMediaPlaylist实现音频文件的播放。而主界面的实现也都是用语言实现的,用QVBoxLayout管理布局。

3.目前获取音频文件的详细信息用的是mtag,mtag利用了taglib库(https://github.com/taglib/taglib)可是mtag是c语言库,只支持参数为char*,而程序中窗口得到的歌曲文件的名字是中文,经过tolatin1().data()转换过来时,没法识别中文名字或者路径的文件。待解决。(已解决,解决方法见http://my.oschina.net/u/263978/blog)

相关文章
相关标签/搜索