我正在尝试获取QML ListView的所有可见项目(即只有眼睛可见的项目),但我不知道如何实现此功能。也许存在一些工作方法?提前谢谢。
答案 0 :(得分:0)
indexAt(real x,real y)可用于计算可见项的索引范围。
https://doc.qt.io/qt-5/qml-qtquick-listview.html#indexAt-method
我不知道会为您提供可见项目的索引范围的功能。您必须根据商品大小和特定的布局提出自己的实施方案。
这是一种可能的实现方式:
ListView {
id: listView
function getVisibleIndexRange() {
var center_x = listView.x + listView.width / 2
return [indexAt( center_x, listView.y + listView.contentY + 10),
indexAt( center_x, listView.y + listView.contentY + listView.height - 10)]
}
}
这是我正在使用的实现:
id: listView
onContentXChanged: {
var idx = 0
if ( listView.atXBeginning ) {
idx = 0
}
else if ( listView.atXEnd ) {
idx = listViewModel.count - 1
}
else {
idx = listView.indexAt( listView.contentX + listView.width / 2,
listView.y + listView.height / 2 )
}
//Do things with idx
}