我正在使用QML为Ubuntu Touch创建一个音乐播放器,因为我是QML的新手,所以我会感谢一些帮助。
该应用程序可以播放所选目录中列出的曲目,但该目录还显示文件夹,我希望列出所有子目录中的所有文件,而不是只显示根目录中的曲目。
但我真的不知道该怎么做。 FolderListModel是一个可能可以使用的isFolder方法,但我不知道如何使用。或者使用某种功能通过选定的目标。
我来到这个帖子qml FolderListModel,但它没有给我任何东西。
这是当前列出我的曲目的代码:
Column {
anchors.centerIn: parent
anchors.fill: parent
ListView {
id: musicFolder
FolderListModel {
id: folderModel
folder: musicDir
nameFilters: ["*.ogg","*.mp3","*.oga","*.wav"]
}
width: parent.width
height: parent.height
model: folderModel
delegate: ListItem.Subtitled {
text: fileName
subText: "Artist: "
onClicked: {
console.debug('Debug: User pressed '+musicDir+fileName)
playMusic.source = musicDir+fileName
playMusic.play()
}
}
}
}
答案 0 :(得分:0)
您需要一个代理模型,以递归方式展平嵌套项。这种代理模型的一个例子是KDescendantsProxyModel(我也是using it)。
或者,您可以通过递归遍历文件系统(或让某些现有类为您执行此操作)构建与特定模式匹配的文件列表,并将结果提供给其他更简单的模型。这样做的缺点是无法轻松显示更新。