ubuntu QT5:mp3_player

一.项目设想

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

二.进度

2013.12.03

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

2013.12.05

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

2014.2.20

以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)






转载于:https://my.oschina.net/u/263978/blog/203298

你可能感兴趣的:(php,内存管理,c/c++)