QtQuick - FolderListModel 未显示所有文件
QtQuick - FolderListModel not showing all the files
我在使用 FolderListModel 时遇到问题。我试图仅过滤特定目录的 XML 文件并将它们显示在 ListView 中。问题是,它只显示一个文件,而我在这个目录中有几个 XML 文件。
我尝试使用其他类型的文件(txt、pdf),但它从未在 ListView 中显示正确数量的文件。
这是我的代码,我做错了什么?
ListView {
id: listView1
x: 0
width: 288
height: 256
anchors.top: parent.top
anchors.topMargin: 16
anchors.horizontalCenter: parent.horizontalCenter
delegate: listviewdelegate
model: listviewmodel
clip: true;
}
FolderListModel{
id:listviewmodel
nameFilters: ["*.xml"]
showDirs: false
showDotAndDotDot: false
folder:"C:/Users/bg/Documents"//serializationpath
}
Component{
id:listviewdelegate
Text {
text: fileName
color: m_colorDefault
font.pixelSize: m_iFontSizeMin
anchors.verticalCenter: parent.verticalCenter
}
}
我们不能在 ListView 中使用 FolderListModel 吗?
感谢您的帮助,
此致
编辑:
当我试图解决我的问题时,我注意到 Qt 文档
文件夹 属性 不正确。它说默认情况下它是一个无效的URL,但是如果我不设置文件夹,它会使用应用程序的文件夹。
我尝试用绝对路径设置文件夹 属性:
FolderListModel {
id: listviewmodel
folder: "F:/QtDev/Sources.ScenarioEditor"
}
但它一直在使用应用程序的文件夹,而没有大喊错误的路径。所以我在这里有点困惑...
编辑 2:
我终于成功定位到正确的文件夹,但现在我面临着 nameFilters 属性...
的愚蠢行为
这是一个片段:
FolderListModel {
id: listviewmodel
showDirs: false
//works fine and filters XML
// folder:"file:/F:/QtDev/Sources.ScenarioEditor"
// nameFilters: ["*.xml"]
//works fine but doesn't filter XML
folder:"file:/"+scenario.serializationPath
nameFilters: ["*.xml"]
}
scenario.serializationPath 以我的用户文件夹为目标,这是我真正需要使用的文件夹。但在那种情况下,文件过滤不起作用:/
任何帮助将不胜感激,因为我在这个问题上停留了一段时间。
此致
我在尝试使用具有动态 folder
名称和 nameFilter
的 FolderListModel 时偶然发现了类似的问题。我试图更新文件夹 and/or 过滤器,然后使用 Component.onCompleted
刷新附加到模型的视图。填充模型似乎是一个异步操作,Component.onCompleted
调用尚未准备好数据,因此作为一种解决方法,我触发了 FolderListModel count
值的视图更新:
property int totalFileCount: folderListModel.count
onTotalFileCountChanged: {
console.log("total files: " + totalFileCount);
// **** Refresh your view here ****
}
FolderListModel {
id: folderListModel
folder: "" // This gets updated by another function
nameFilters: [ "*.png" ]
}
我在使用 FolderListModel 时遇到问题。我试图仅过滤特定目录的 XML 文件并将它们显示在 ListView 中。问题是,它只显示一个文件,而我在这个目录中有几个 XML 文件。 我尝试使用其他类型的文件(txt、pdf),但它从未在 ListView 中显示正确数量的文件。 这是我的代码,我做错了什么?
ListView {
id: listView1
x: 0
width: 288
height: 256
anchors.top: parent.top
anchors.topMargin: 16
anchors.horizontalCenter: parent.horizontalCenter
delegate: listviewdelegate
model: listviewmodel
clip: true;
}
FolderListModel{
id:listviewmodel
nameFilters: ["*.xml"]
showDirs: false
showDotAndDotDot: false
folder:"C:/Users/bg/Documents"//serializationpath
}
Component{
id:listviewdelegate
Text {
text: fileName
color: m_colorDefault
font.pixelSize: m_iFontSizeMin
anchors.verticalCenter: parent.verticalCenter
}
}
我们不能在 ListView 中使用 FolderListModel 吗? 感谢您的帮助,
此致
编辑: 当我试图解决我的问题时,我注意到 Qt 文档 文件夹 属性 不正确。它说默认情况下它是一个无效的URL,但是如果我不设置文件夹,它会使用应用程序的文件夹。 我尝试用绝对路径设置文件夹 属性:
FolderListModel {
id: listviewmodel
folder: "F:/QtDev/Sources.ScenarioEditor"
}
但它一直在使用应用程序的文件夹,而没有大喊错误的路径。所以我在这里有点困惑...
编辑 2: 我终于成功定位到正确的文件夹,但现在我面临着 nameFilters 属性...
的愚蠢行为这是一个片段:
FolderListModel {
id: listviewmodel
showDirs: false
//works fine and filters XML
// folder:"file:/F:/QtDev/Sources.ScenarioEditor"
// nameFilters: ["*.xml"]
//works fine but doesn't filter XML
folder:"file:/"+scenario.serializationPath
nameFilters: ["*.xml"]
}
scenario.serializationPath 以我的用户文件夹为目标,这是我真正需要使用的文件夹。但在那种情况下,文件过滤不起作用:/
任何帮助将不胜感激,因为我在这个问题上停留了一段时间。
此致
我在尝试使用具有动态 folder
名称和 nameFilter
的 FolderListModel 时偶然发现了类似的问题。我试图更新文件夹 and/or 过滤器,然后使用 Component.onCompleted
刷新附加到模型的视图。填充模型似乎是一个异步操作,Component.onCompleted
调用尚未准备好数据,因此作为一种解决方法,我触发了 FolderListModel count
值的视图更新:
property int totalFileCount: folderListModel.count
onTotalFileCountChanged: {
console.log("total files: " + totalFileCount);
// **** Refresh your view here ****
}
FolderListModel {
id: folderListModel
folder: "" // This gets updated by another function
nameFilters: [ "*.png" ]
}