我无法检索在 DelegateModel 中为 ListView 实例化的委托的 index . 最小的例子如下:
LastProcedures.qml
ListModel {
ListElement {
procedure: "Liver Resection"
surgeon: "Prof. Dr. Joyride"
recent: true
}
...
}
main.qml
ListView {
id: list_lastProcedures
model: displayDelegateModel
}
DelegateModel {
id: displayDelegateModel
delegate: lastProceduresDelegate
model: LastProcedures {}
groups: [
DelegateModelGroup {
includeByDefault: false
name: "recent"
}
]
filterOnGroup: "recent"
Component.onCompleted: {
var rowCount = model.count;
items.remove(0,rowCount);
for( var i = 0;i < rowCount;i++ ) {
var entry = model.get(i);
// Only the recent three
if((entry.recent == true) && (items.count < 3)) {
items.insert(entry, "recent");
}
}
}
}
Component {
id: lastProceduresDelegate
Text{
text: model.index
}
}
文本索引始终打印-1 . 如果没有DelegateModel,它会在ListView中打印索引 . 如何在Listview中访问委托的正确索引?
2 回答
我最终没有删除所有条目并将它们添加回组,而是删除不需要的条目 . 这使索引保持有效 . 如果有人能够进一步解释这种行为,那就太好了 .
你可以用“lastProceduresDelegate.DelegateModel.itemsIndex”代替“model.index”
像这样: