更新列表视图显示在标签栏布局QML中

时间:2012-07-06 09:48:37

标签: listview qml tabbar

我创建了一个普通的标签栏,并在我的SD卡的特定目录中的列表视图中显示音乐文件。我希望在目录中下载新文件时更新列表。但是因为我在标签栏中显示了列表,所以qml在开头加载。我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果它是您的选项,我会抓住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()
}

丑陋,但确实有效。

答案 1 :(得分: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上。