我有菜单项型号和Instantiator。
Menu {
id: backContextMenu
Instantiator {
model: backModel
MenuItem {
text: model.text
}
onObjectAdded: {
console.log("QML: object added: " + object.text + ", index= " + index);
backContextMenu.insertItem(index,object)
}
onObjectRemoved: {
backContextMenu.removeItem(object)
console.log("QML: object removed: " + object.text);
}
}
}
当我在索引0处向模型添加一些项时,将使用新的MenuItem和objectAdded
按预期发出信号index=0
。但是如果我想从模型中删除一些项目(例如,我在模型中有["a";"b";"c";"d"]
并想要删除“a”和“b”)菜单项从另一侧(“c”和“d”)删除被丢弃,“a”和“b”仍然活着)。经过一些黑客攻击后,我找到了解决方法:如果我从模型开头删除n
项,我应该写
beginRemoveRows(QModelIndex(), _items.count()-n, _items.count()-1);
而不是
beginRemoveRows(QModelIndex(), 0, n-1);
为什么要从另一方移除物品的任何想法?我有demo给你。