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)

相關文章
相關標籤/搜索