如何获得在 a 中可见的第一个Item
/ ?我查看了文档,也在互联网上搜索了很多,但找不到任何东西。有谁知道这是怎么做到的吗?index
ListView
谢谢!
如何获得在 a 中可见的第一个Item
/ ?我查看了文档,也在互联网上搜索了很多,但找不到任何东西。有谁知道这是怎么做到的吗?index
ListView
谢谢!
你应该使用类似的东西:
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
我知道这已经晚了,但对于其他寻求帮助的人:
您可以使用成员方法myView.indexAt(QPoint(0,0))
找到第一个索引。
如果您也需要,我还制作了一个片段来查找视图中的所有可见索引: https ://gist.github.com/iSplasher/8ebc42eaf9ea206b19bd
更改时存储选定的索引。一旦模型发生变化并且索引变为-1,您就可以使用它positionViewAtIndex
来恢复正确的位置。
这里是该方法的文档。
否则,您可以依靠add
andremove
方法执行相同的操作。显然,只要所选项目的索引发生变化,它就会起作用。也可以通过该indexAt
方法获取可见项的索引,不过我之前没用过,虽然看起来好用。
因此,您有几种方法可以获取可见项的索引,并且可以通过上述方法重置视图。
根据 iSplasher 的回答,当 QListView 具有间距和/或按像素滚动时,以下工作有效:
sp = view.spacing()
first = max(view.indexAt(QPoint(sp, 0)), view.indexAt(QPoint(sp, sp * 2)))