这样做的任何想法?想象一下,我们有一个很长的列表视图,我们将只下载可见项目的图像(即屏幕上可见的项目)
答案 0 :(得分:0)
观点中的代表是created as needed;也就是说,当他们进入视野时。但是,默认情况下visible
属性为true,因此要检查项目是否实际可见,您可以使用currentIndex和contentY:
import QtQuick 2.6
import QtQuick.Window 2.2
Window {
width: 600
height: 600
visible: true
ListView {
id: listView
width: 200
height: 200
anchors.centerIn: parent
model: 50
onContentYChanged: currentIndex = contentY / height
delegate: Image {
width: listView.width
height: width
source: "http://www.blah.com/image" + index + ".png"
fillMode: Image.PreserveAspectFit
ListView.onIsCurrentItemChanged: {
if (ListView.isCurrentItem) {
print("Downloading image at index " + index + "...");
}
}
}
}
}
这假设代表是方形的,并且与视图本身的大小相同;虽然,使用这种方法,所有真正重要的是视图和代表的高度。
答案 1 :(得分:0)
非常感谢Mitch。你的代码还可以,但遗憾的是每次改变Listview的“currentIndex”,减少滚动行为的顺畅性。我现在在我的委托中使用这个代码并且它还不错,也许我以后会写一个更好的方法:
property bool isVisible : ((y > GridView.view.contentY) && y < (GridView.view.contentY + GridView.view.height))
onIsVisibleChanged: {
if (isVisible && !exists("data/"+ImgPath)){
print("Downloading image at index " + index + "...")
isVisible = false
}
}