QtQuick菜单Instantiator:通知有关已更改的行

时间:2013-10-01 19:19:38

标签: qt qml qtquick2 qt-quick

我有菜单项型号和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给你。

0 个答案:

没有答案