当前位置:  开发笔记 > 编程语言 > 正文

QML中ItemSelectionModel的用途和用法

如何解决《QML中ItemSelectionModel的用途和用法》经验,为你挑选了1个好方法。

在浏览QML文档时,我发现了这个值得称赞的文档类: ItemSelectionModel

C++ - Class QItemSelectionModel提供了一些更详细的信息,以便跟踪模型中项目的选择.

然而,在QML方面,我没有关于如何使用它的线索.

可以说,我有这个 ListModel

ListModel {
    id: lm
    ListElement { value: 0 }
    ListElement { value: 0 }
    ListElement { value: 0 }
    ListElement { value: 0 }
    ListElement { value: 1 }
    ListElement { value: 1 }
    ListElement { value: 2 }
    ListElement { value: 2 }
    ListElement { value: 0 }
    ListElement { value: 0 }
    ListElement { value: 2 }
    ListElement { value: 2 }
}

现在我有一个View显示所有这个模型的视图和第二个视图,其中我只想显示它的选择.所以我创建了一个ItemSelectionModel并且select从第一个视图的代表那里调用了它的方法,它似乎根本没有任何效果.甚至连hasSelection属性都没有改变.

Repeater {
    model: lm
    delegate: Rectangle {
        property int row: Math.floor(index / 4)
        property int column: index % 4
        width: 100
        height: 100
        x: 100 * column
        y: 100 * row
        border.color: 'black'

        MouseArea {
            anchors.fill: parent
            onClicked: {
                ism.select(index, ItemSelectionModel.Select | ItemSelectionModel.Current)
                console.log(ism.hasSelection)
            }
        }
    }
}

ItemSelectionModel {
    id: ism
    model: lm
}

所以我想知道这个组件的目的是什么,它似乎什么都不做.或者,我怎样才能让它做一些有目的的事情呢?



1> Robin Burche..:

文档确实没有任何帮助.很抱歉,我已经提交了一个错误来修复它.

在QML世界中,它应该履行与QItemSelectionModel(即保持多个视图的选择状态同步)相同的功能- 实际上,QML中的实现直接实例化,并且调用实际上与QItemSelectionModels 相同.

这实际上可能是您遇到麻烦的根源,因为QML的视图不使用QModelIndex(QItemSelectionModel需要),而是int index指模型的行号.要得到一个QModelIndex,你可以这样打电话QAbstractItemModel::index:

onClicked: {
    // note: lm here is the id of your ListModel
    ism.select(lm.index(index, 0), ItemSelectionModel.Select | ItemSelectionModel.Current)
    console.log(ism.selectedIndexes)
    console.log(ism.hasSelection)
}

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有