如何获得Item
中可见的第一个index
/ ListView
?我查看了文档,并在互联网上搜索了很多,但无法找到任何内容。有谁知道怎么做?
谢谢!
答案 0 :(得分: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-coord。
请参阅文档以获取更多详细信息http://doc.qt.io/qt-5/qml-qtquick-listview.html#indexAt-method
答案 1 :(得分:1)
我知道这已经晚了,但其他人寻求帮助:
您可以使用成员方法myView.indexAt(QPoint(0,0))
查找第一个索引。
如果您还需要,我还会在视图中找到所有可见索引的片段: https://gist.github.com/iSplasher/8ebc42eaf9ea206b19bd
答案 2 :(得分:0)
更改时存储选定的索引。
模型更改后索引变为-1,您可以使用positionViewAtIndex
恢复正确的位置。
Here该方法的文档。
否则,您可以依靠add
和remove
方法执行相同操作。
显然,只要所选项目的索引发生变化,它就可以工作。
您还可以通过indexAt
方法获取可见项目的索引,但我之前从未使用过它,即使它看起来很容易使用。
因此,您有几种方法可以获取可见项的索引,您可以通过上述方法重置视图。
答案 3 :(得分:0)
基于iSplasher的回答,当QListView具有间距和/或按像素滚动时,以下内容可以工作:
sp = view.spacing()
first = max(view.indexAt(QPoint(sp, 0)), view.indexAt(QPoint(sp, sp * 2)))