Qml 从Qt Quick中的文件夹中读取n个随机文件
我正在编写我的第一个Qt Quick应用程序,在其他环境中做简单的事情时遇到了很多困难。我想显示文件夹中的n个随机图像。为此,我使用FolderListModel,但问题是我没有看到任何直接访问文件列表的方法。下面是我的黑客方法:Qml 从Qt Quick中的文件夹中读取n个随机文件,qml,qt-quick,Qml,Qt Quick,我正在编写我的第一个Qt Quick应用程序,在其他环境中做简单的事情时遇到了很多困难。我想显示文件夹中的n个随机图像。为此,我使用FolderListModel,但问题是我没有看到任何直接访问文件列表的方法。下面是我的黑客方法: 使用FolderListModel读取文件 使用文本组件作为委托 ContextChanged of Text组件获取文件名(此部分有效)并将其添加到某个ListModel中 将ListModel随机化,然后使用它显示文件 我有很多问题,但首先,做这件事的明智方法
- 使用FolderListModel读取文件
- 使用文本组件作为委托
- ContextChanged of Text组件获取文件名(此部分有效)并将其添加到某个ListModel中
- 将ListModel随机化,然后使用它显示文件
import QtQuick 1.0
import Qt.labs.folderlistmodel 1.0
ListView {
width: 200; height: 300
FolderListModel {
folder: "file:///C:/somefolder"
id: folderModel
nameFilters: ["*.jpg"]
}
Component {
id: fileDelegate
Text { id: intext
text: fileName
//the next line fails, Can't find variable: anotherModel
onTextChanged: anotherModel.append([{name: intext.text}]
)
}
}
model: folderModel
delegate: fileDelegate
ListModel {
id: anotherModel
}
}
你的代码几乎适合我。我得到错误“qmlistmodel:append:value不是对象”。这是因为您附加了数组。 如果您拆下一行中的支架
anotherModel.append([{name: intext.text}])
它起作用了。要使anotherModel成为公共属性,请将其写为
property ListModel anotherModel: ListModel {}
谢谢这几乎奏效了。我不得不将行更改为:parent.parent.anotherModel.append({name:intext.text})奇怪。应该是这样的。如果您想要一个没有父级的解决方案,只需向ListView添加一些ID(比如ID:myFolderList),然后使用该ID引用列表模型(比如myFolderList.anotherModel.append(…)。