生活随笔
收集整理的這篇文章主要介紹了
基于Qt5GUI框架+SQLite的音乐播放器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
音樂播放器 3
一、概述 3
主要內容: 3
已實現的目標: 3
二、主要類的設計 3
1)依次介紹各個主要類的設計: 3
2)綜上所述,各個類之間的關系大致如下圖所示: 6
三、程序的功能特點和運行操作方法 6
四、實現中值得一提的地方 12
1)歌曲圖片 12
2)歌詞展示 12
3)在Qt Designer 中使用自定義的部件 12
4)界面設計總結 12
音樂播放器
一、概述
主要內容:
利用Qt5 GUI 框架及其中的音頻播放模塊,完成了一個小巧、界面精美的本地音樂播放器。支持添加本地音樂、添加歌單、歌詞查看、自定義背景、系統托盤控制播放等。同時, 使用SQLite 本地數據庫保存已添加的音樂、歌單的信息,本文轉載自http://www.biyezuopin.vip/onews.asp?id=15252且使用.ini 文件記錄應用設置信息。
已實現的目標:
?界面精美且支持自定義背景
?支持播放的音樂格式:.mp3 文件、.flac 文件、.mpga 文件
?支持解析并展示歌詞文件(.lrc 文件)
?支持解析歌曲信息(專輯、比特率、縮略圖等等)
?支持歌單管理
?系統托盤可控制播放
?數據庫保存已添加的歌曲和歌單信息
二、主要類的設計
1)依次介紹各個主要類的設計:
a) Music 類
代表一首歌曲。記錄著歌曲相關信息,其中最為重要的是歌曲的 url 信息(即:歌曲文件所在的路徑),播放的時候需要根據 url 來將歌曲文件加入播放器。還記錄下的一些其他的歌曲信息,可見于下圖。
部分數據成員及成員函數展示:
#include "Music.h"
#include <QMediaPlayer>
#include <QCoreApplication>
#include <QMessageBox>
#include <QtSql>Music::Music(QUrl iurl
)
{url
=iurl
;refreshInfo();
}extern QString
formatTime(qint64 timeMilliSeconds
);
void Music::refreshInfo()
{QMediaPlayer tempPlayer
;tempPlayer
.setMedia(url
);while(!tempPlayer
.isMetaDataAvailable()){QCoreApplication::processEvents();}QStringList list
=tempPlayer
.availableMetaData();if(tempPlayer
.isMetaDataAvailable()){author
= tempPlayer
.metaData(QStringLiteral("Author")).toStringList().join(",");title
= tempPlayer
.metaData(QStringLiteral("Title")).toString();albumTitle
= tempPlayer
.metaData(QStringLiteral("AlbumTitle")).toString();audioBitRate
= tempPlayer
.metaData(QStringLiteral("AudioBitRate")).toInt();duration
=tempPlayer
.duration();}
}QString
Music::getLyricFile()
{QString mp3FilePath
=url
.toLocalFile();mp3FilePath
.replace(".mp3",".lrc");mp3FilePath
.replace(".flac",".lrc");mp3FilePath
.replace(".mpga",".lrc");return mp3FilePath
;
}QString
Music::getInfo() const
{return author
+" - "+title
+" ["+formatTime(duration
)+"]";
}void Music::detail()
{QString
info("歌曲名:%1\n藝術家:%2\n時長:%3\n唱片集:%4\n比特率:%5\n文件路徑:%6");info
=info
.arg(title
,author
,formatTime(duration
),albumTitle
,QString::number(audioBitRate
)+"bps",url
.toString());QMessageBox::about(Q_NULLPTR
,"歌曲信息",info
);
}void Music::insertSQL(const QString
&name
)
{QSqlQuery sql_query
;QString insert_sql
= "insert into MusicInfo values (?, ?, ?, ?, ?, ?, ?)";sql_query
.prepare(insert_sql
);sql_query
.addBindValue(name
);sql_query
.addBindValue(url
.toString());sql_query
.addBindValue(author
);sql_query
.addBindValue(title
);sql_query
.addBindValue(duration
);sql_query
.addBindValue(albumTitle
);sql_query
.addBindValue(audioBitRate
);sql_query
.exec();
}bool MusicCompare::operator()(const Music
&A
, const Music
&B
)
{switch (key
) {case TITLE
:return A
.title
<B
.title
;case AUTHOR
:return A
.author
<B
.author
;case DURATION
:return A
.duration
<B
.duration
;case EQUALITY
:return A
.getUrl()==B
.getUrl();default:return A
.getInfo()<B
.getInfo();}
}
總結
以上是生活随笔為你收集整理的基于Qt5GUI框架+SQLite的音乐播放器的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。