我如何在qml中获得任何文件夹中的文件?



我尝试用qml创建一个汽车音乐播放器在橙色的圆周率中。在这个项目中,我需要使用USB闪存获取用户的音乐。

在这个USB中可以有各种文件和文件夹。我们只需要得到音频文件。

这是我的qml的一部分代码:

MediaPlayer {
id: player
autoPlay: true

}
Item {
id: playLogic
property int index: -1
property MediaPlayer mediaPlayer: player
property FolderListModel items: FolderListModel {
folder:  "./"
nameFilters: ["*.mp3", "*.ogg", "*.wav"]
}

function init(){
if(mediaPlayer.playbackState===1){
mediaPlayer.pause();
}else if(mediaPlayer.playbackState===2){
mediaPlayer.play();
}else{
setIndex(0);
}
}
function setIndex(i)
{
index = i;
if (index < 0 || index >= items.count)
{
index = -1;
mediaPlayer.source = "";
}
else{
mediaPlayer.source = items.get(index,"filePath");
mediaPlayer.play();
}
}
function next(){
setIndex(index + 1);
}
function previous(){
setIndex(index - 1);
}
Connections {
target: playLogic.mediaPlayer
onPaused: {
playpuse_img.source = puse;
}
onPlaying: {
playpuse_img.source = play;
}
onStopped: {
playpuse_img.source = play;
if (playLogic.mediaPlayer.status == MediaPlayer.EndOfMedia)
playLogic.next();
}
onError: {
console.log(error+" error string is "+errorString);
}
onMediaObjectChanged: {
if (playLogic.mediaPlayer.mediaObject)
playLogic.mediaPlayer.mediaObject.notifyInterval = 50;
}
}
}

所以对于这个想法,我想我需要得到任何音频文件在/media/$USER/{flas_name}目录。

我该怎么做呢?

如果您的目标是纯粹在QML中完成此操作,那么您可能正在寻找FolderListModel。请参阅此处的文档。下面是用法示例:

import QtQuick 2.15
import Qt.labs.folderlistmodel 2.15
ListView {
width: 200; height: 400
FolderListModel {
id: folderModel
folder: "file:///media"
nameFilters: ["*.mp3"]
}
Component {
id: fileDelegate
Text { text: fileName }
}
model: folderModel
delegate: fileDelegate
}

最新更新