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