4

如何获得在 a 中可见的第一个Item/ ?我查看了文档,也在互联网上搜索了很多,但找不到任何东西。有谁知道这是怎么做到的吗?indexListView

谢谢!

4

4 回答 4

3

你应该使用类似的东西:

ListView {
        id: contacts
        model: UsersModel

        onContentYChanged: {
            var CurrentIndexAtTop = indexAt(1, contentY)
            var CurrentPropFromModel = UsersModel.get(CurrentIndexAtTop).Name
        }
}

如果 indexAt 返回 -1 表示未找到,如果需要,请检查!contentY - 它是 ListView 的一个属性,它返回可滑动网格 ListView 上 ViewList 窗口的当前位置顶部 Y 坐标。

有关更多详细信息,请参阅文档http://doc.qt.io/qt-5/qml-qtquick-listview.html#indexAt-method

于 2017-03-15T12:48:30.247 回答
1

我知道这已经晚了,但对于其他寻求帮助的人:

您可以使用成员方法myView.indexAt(QPoint(0,0))找到第一个索引。

如果您也需要,我还制作了一个片段来查找视图中的所有可见索引: https ://gist.github.com/iSplasher/8ebc42eaf9ea206b19bd

于 2015-12-26T13:24:18.350 回答
0

更改时存储选定的索引。一旦模型发生变化并且索引变为-1,您就可以使用它positionViewAtIndex来恢复正确的位置。

这里是该方法的文档。

否则,您可以依靠addandremove方法执行相同的操作。显然,只要所选项目的索引发生变化,它就会起作用。也可以通过该indexAt方法获取可见项的索引,不过我之前没用过,虽然看起来好用。

因此,您有几种方法可以获取可见项的索引,并且可以通过上述方法重置视图。

于 2015-06-25T13:26:33.143 回答
0

根据 iSplasher 的回答,当 QListView 具有间距和/或按像素滚动时,以下工作有效:

sp = view.spacing()
first = max(view.indexAt(QPoint(sp, 0)), view.indexAt(QPoint(sp, sp * 2)))
于 2019-01-31T09:45:34.600 回答