【问题标题】:Recursevly go trough delegated maps in FolderListModel (QML)递归遍历 FolderListModel (QML) 中的委托映射
【发布时间】:2013-05-08 21:09:28
【问题描述】:

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

【问题讨论】:

    标签: qt qml subdirectory


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我会尝试以某种方式创建一个数组,然后打印出来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2021-02-18
    • 2023-03-29
    • 2018-07-12
    • 2014-03-11
    相关资源
    最近更新 更多