2

我有菜单项模型和实例化器。

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);

任何想法为什么从另一边移除物品?我有演示给你。

4

0 回答 0