關注優麒麟,更多幹貨等着你!
麒麟音樂是一款設計美觀、功能簡潔、支持多種音樂格式的音樂播放器。在播放本地音樂的同時,還可以根據用戶喜好、自定義歌單來對音樂進行分組。
除常規模式外,麒麟音樂還有小窗口模式來滿足用戶的不同需求。想知道麒麟音樂有哪些功能?小優這就帶你了解,一款友好易用的音樂播放器是如何打造的。
圖1 麒麟音樂首頁
麒麟音樂主要功能及實現:
01
歌單功能
默認歌單為我喜歡歌單,點擊收藏按鈕或者右鍵選擇“添加到我喜歡”來将歌曲添加到默認歌單中。點擊添加歌單圖标可以創建自定義歌單并對自定義歌單進行命名。
在歌單列表區域點擊鼠标右鍵,可以進行歌單播放、歌單重命名、删除歌單等操作。
圖2 麒麟音樂歌單列表
02
播放功能
播放/暫停:點擊切換當前歌曲的暫停/播放狀态。
上一首:播放當前列表當前播放順序的上一首歌曲。
下一首:播放當前列表當前播放順序的下一首歌曲。
音量:調整當前播放的音量。
收藏:可以添加/删除歌曲到“我喜歡”的列表。
播放順序:支持列表循環、單曲循環、随機播放三種模式。
播放列表:曆史播放列表顯示播放曆史。
03
使用相關庫解析音頻文件
對于一個音樂播放器來說,對音頻文件進行解析,從而獲得音頻文件中包含的歌曲名、歌手、專輯名等種種信息,是非常重要的一步。麒麟音樂針對不同格式的音頻文件及不同類型的信息,使用 Taglib、FFmpeg 等多個第三方庫進行解析,避免了單一庫支持的格式不全以及部分信息解析不全的問題。歌曲信息解析完成後,會自動保存在數據庫中,方便歌單等模塊調用歌曲信息。
04
使用MPV播放音頻文件
麒麟音樂使用 mpv 播放音頻文件,支持大多數常見音頻格式。詳見以下列表:
圖3 麒麟音樂支持的音頻格式
除了正常播放歌曲外,還可以對歌曲進行跳轉播放,拖動進度條即可改變歌曲進度。
05
使用數據庫保存歌單及歌曲列表
麒麟音樂使用 SQLite 數據庫來保存歌單及歌曲信息,SQLite 是一款開源輕量級的數據庫軟件,不需要 server,可以集成在其他軟件中,非常适合嵌入式系統。
Qt5以上版本可以直接使用 SQLite。使用數據庫模塊時,必須要在項目的 pro 文件中添加:
Qt = sql
在需要使用 SQL 的類定義中,引用相關頭文件。例如:
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
QSqlDatabase 類提供了一個接口,用于通過連接訪問數據。QSqlDatabase 的一個實例表示連接。通過驅動程序 QSQLITE 類型和連接名稱 connectionName 提供對數據庫的連接及訪問,該驅動程序派生自 QSqlDriver。
QSqlQuery 類通過 exec() 成員函數來執行 DML(數據操作語言)語句,如 SELECT、INSERT、UPDATE 和 DELETE,以及 DDL(數據定義語言)語句等。
QSqlQuery 類在發生錯誤時,提供了錯誤的相關信息。包括驅動信息 driverText(),數據庫信息 databaseText(),或者它們的綜合(text()方法獲取),也提供了 number()和 type()函數,用于顯示錯誤數量與類别。錯誤可以通過 QSqlDatabase::lastError()、QSqlQuery::lastError()、模型的 lastError()函數三種方式獲取。
在增删歌曲或增删歌單時,都是通過對數據庫進行操作,然後反映到前端,前端與數據庫的分離,避免了很多異常錯誤情況。
06
使用Model/View 實現歌單及歌曲列表的顯示
麒麟音樂使用 Model/View 實現歌單及歌曲列表頁面的顯示。所以隻需要關注更新 model 的部分,而不需要關心 view 該如何變化,因為當 model 改變了,所有關聯它的 view 都會得到相應的更新。
在傳統的 Widgets 應用程序中,Qt 并沒有将數據和窗口分開,顯然這樣的工作就留給了用戶。而 Qt 的 MVC 框架則是将界面與數據進行了隔離,View(視圖)負責展示數據,Model(模型)負責管理數據,Delegate(委托)負責 View 和 Model 的交互。
圖4 麒麟音樂歌曲列表頁面
07
播放曆史功能實現
麒麟音樂通過播放曆史保存用戶的播放記錄,播放曆史中的歌曲也可以随時點擊進行播放。
歌單或歌曲列表中的歌曲播放時,會自動加入播放曆史,播放曆史自身的歌曲播放時不會加入。
圖5 麒麟音樂播放曆史頁面
08
精簡模式
點擊标題欄中 mini 模式圖标可以進入 mini 窗口模式。mini 窗口默認左側顯示正在播放的歌曲名、專輯封面以及時間模塊,右側為收藏、播放順序圖标。
當鼠标懸浮到 mini 窗口時,歌曲名和時間會隐藏,此時顯示上一首、播放/暫停、下一首、最大化和關閉圖标。
圖6 麒麟音樂 mini 模式窗口
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!