Qt QML有ListModel可用于表示列表数据。它提供了许多方法来向列表中添加元素,但我可以找到的唯一方法来检索元素是期望索引的get()
方法。
我想检查我的ListModel是否包含特定元素?有没有办法使用键和值来接收ListElement对象?
例如connsider这个列表:
ListModel {
id: fruitModel
ListElement {
name: "Apple"
cost: 2.45
}
ListElement {
name: "Orange"
cost: 3.25
}
ListElement {
name: "Banana"
cost: 1.95
}
}
是否有像fruitModel.get({name:" Banana"})之类的方法可以找到名称为" Banana"的元素。并归还他们?
答案 0 :(得分:6)
您必须迭代并检查列表元素。
如果您要执行不同的搜索,编写一个函数是个好主意,您可以将搜索条件作为仿函数传递:
function find(model, criteria) {
for(var i = 0; i < model.count; ++i) if (criteria(model.get(i))) return model.get(i)
return null
}
您可以像这样使用,查找名称为"Banana"
的项目:
find(fruitModel, function(item) { return item.name === "Banana" })
如果可能有多次点击,则应返回一个项目数组而不是单个项目。