1

我正在为 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()
                        }
                    }
                }
            }
4

1 回答 1

0

您将需要一个代理模型,它可以递归地展平嵌套项目。这种代理模型的一个例子是KDescendantsProxyModel(我也在使用它)。

或者,您可以通过递归遍历文件系统(或让某些现有类为您执行此操作)并将结果提供给其他更简单的模型来构建与特定模式匹配的文件列表。这将具有无法轻松显示更新的缺点。

于 2013-05-08T13:09:28.043 回答