我有菜单项模型和实例化器。
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 处向模型添加一些项目时objectAdded
,新的 MenuItemindex=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);
任何想法为什么从另一边移除物品?我有演示给你。