3

我创建了一个普通的标签栏,并在我的 sd 卡的特定目录中的列表视图中显示音乐文件。我希望在目录中下载新文件时更新列表。但是由于我已经在标签栏中显示了列表,所以 qml 是在开始时加载的。我该如何实施?

4

2 回答 2

2

如果您可以选择,我会选择 QtQuick 2.0 实现并改用它。它将自动对文件夹中的更改做出反应。

否则,您别无选择,只能重新创建模型,例如

import QtQuick 1.1
import Qt.labs.folderlistmodel 1.0

ListView {
    id: view
    model: folderModel
    delegate: Text { text: fileName }

    property variant folderModel
    function updateModel() {
        var folder = ""
        if (folderModel) {
            folder = folderModel.folder
            folderModel.destroy()
        }
        folderModel = modelComponent.createObject(view, {"folder": folder})
    }

    Component {
        id: modelComponent
        FolderListModel {}
    }

    Component.onCompleted: updateModel()
}

丑陋,但它的工作原理。

于 2012-07-09T01:42:41.587 回答
0

一旦从路径中添加或删除新文件,FolderListModel 似乎会自动更新列表:(Qt5.7.1)

    ListView
    {
        id:myListViewUSB
        anchors.fill: parent

        FolderListModel
        {
            id: folderModelUSB
            folder: "file:///mnt/usb"
        }
        model: folderModelUSB

        delegate:
        Text
        {
            text:  fileName
            anchors.horizontalCenter: parent.horizontalCenter
        }
    }

我通过在我的文件夹中添加和删除文件来测试它,它会自动出现在 ListView 上。

于 2017-06-28T08:22:31.383 回答