Я разрабатывал проигрыватель Musi c с использованием QML , и я реализовал Компонент списка воспроизведения для списка воспроизведения песен.
MediaPlayer {
id: audioPlayer
audioRole: Audio.MusicRole
autoPlay: true
property int durationProgress: position
playlist: Playlist {
id: audioPlaylist
property int lastSongPlayed: currentIndex
onLoaded: {
console.log("Playlist loading successful")
}
onLoadFailed: {
console.log("Playlist loading failed -> "+errorString)
}
}
Я хочу изменить список воспроизведения для Параметры «Далее», «Удалить», «Переместить» . Работает нормально, если индекс движущихся песен ниже текущего индекса плейлиста. Но когда операция выполняется с индексом ниже, чем currentIndex, что вызывает изменение индекса текущей воспроизводимой песни в списке воспроизведения, Player просто останавливает воспроизведение, делая currentIndex == - 1. Что совсем не ожидается пользователем. Ниже приведен код.
MenuItem {
text: "Play Next"
onTriggered: {
var i= container.playlist.currentIndex
container.playlist.moveItem(index,i+1)
}
}
Выше не может обрабатывать соглашения для индексов выше currentIndex. Итак, я обрабатываю изменения индексов в моем следующем коде
MenuItem {
text: "Play Next"
onTriggered: {
var i= container.playlist.currentIndex
if(index>i) {
container.playlist.moveItem(index,i+1)
}
else if(index<i) {
container.playlist.moveItem(index,i)
container.playlist.currentIndex= i-1
}
}
}
Расположение списка воспроизведения обрабатывается правильно с этим кодом, но это приводит к тому, что песня воспроизводится с начала (с 0,00). Я не хочу этого Есть ли другой путь. Эти коды предоставляются для операции Play Next, но я знаю, что у меня возникнут проблемы с операциями удаления и перемещения.