八 音乐播放
36 获取音频链接并播放
...
import QtMultimedia 5.12
ApplicationWindow {
id:window
...
MediaPlayer{
id:mediaPlayer
}
}
qml
...
Frame{
...
Component{
id:listViewDelegate
Rectangle{
...
MouseArea{
RowLayout{
...
Item{
Layout.preferredWidth: parent.width*0.15
RowLayout{
anchors.centerIn: parent
MusicIconButton{
iconSource: "qrc:/images/pause"
iconHeight: 16
iconWidth: 16
toolTip: "播放"
onClicked: playMusic(index)
}
...
}
}
}
...
}
}
}
...
function playMusic(index = 0){
if(musicList.length<1) return
var id = musicList[index].id
if(!id) return
function onReply(reply){
http.onReplySignal.disconnect(onReply)
var url = JSON.parse(reply).data[0].url
if(!url) return
mediaPlayer.source = url
mediaPlayer.play()
}
http.onReplySignal.connect(onReply)
http.connet("song/url?id="+id)
}
}
qml
37 设置音乐信息(歌名、歌手、封面)
...
Frame{
...
Component{
id:listViewDelegate
Rectangle{
...
MouseArea{
RowLayout{
...
Item{
Layout.preferredWidth: parent.width*0.15
RowLayout{
anchors.centerIn: parent
MusicIconButton{
iconSource: "qrc:/images/pause"
iconHeight: 16
iconWidth: 16
toolTip: "播放"
onClicked: {
layoutBottomView.playList = musicList
layoutBottomView.playMusic(index)
}
}
...
}
}
}
...
}
}
}
...
}
qml
...
Rectangle{
property var playList: []
property int current: 0
...
RowLayout{
...
Item{
...
Text{
id:nameText
...
}
Text{
id:timeText
...
}
Slider{
id:slider
...
}
}
MusicRoundImage{
id:musicCover
width: 50
height: 50
}
...
}
function playMusic(index = 0){
getUrl(index)
}
function getUrl(index){
if(playList.length<index+1) return
var id = playList[index].id
if(!id) return
nameText.text = playList[index].name+"/"+playList[index].artist
function onReply(reply){
http.onReplySignal.disconnect(onReply)
var url = JSON.parse(reply).data[0].url
if(!url) return
var cover = playList[index].cover
if(cover.length<1) {
getCover(id)
}else{
musicCover.imgSrc = cover
}
mediaPlayer.source = url
mediaPlayer.play()
}
http.onReplySignal.connect(onReply)
http.connet("song/url?id="+id)
}
function getCover(id){
function onReply(reply){
http.onReplySignal.disconnect(onReply)
var cover = JSON.parse(reply).songs[0].al.picUrl
if(cover) musicCover.imgSrc = url
}
http.onReplySignal.connect(onReply)
http.connet("song/detail?ids="+id)
}
}
qml