我想显示大量内容,例如,在一个小于内容的窗口内显示多个图像的网格,类似于地理地图,但我希望使用自己的组件作为“地图”。对于这个最小的工作示例,让我们为内容提供一个图像网格,该图像网格的总大小为1000x1000,而只有300x300的窗口可以浏览。
我尝试了2种不同的方法,但是我只会详细介绍第一种方法,因为这是使我最接近期望结果的方法:
我尝试了Flickable组件,但是无法将内容移动到预定义的范围之外,从而使用户无法移动视图以显示内容的所有部分。因此,我现在正在考虑的最简单的解决方案是,是否可以从Flickable组件中删除这些边界,但是如何?
我也尝试过使用Map组件,但是它需要一个“插件”,我无法弄清楚如何将该组件与自己的图像网格内容一起使用。
我要显示的内容就是这样
Grid {
columns: 5
spacing: 2
Repeater {
model: ListModel {
ListElement {
path: 'test1'
}
ListElement {
path: 'test2'
}
// ...
ListElement {
path: 'test25'
}
}
Rectangle {
width: 200
height: 200
Image {
anchors.fill: parent
source: 'file:' + path
}
}
}
}
我尝试过,将其像这样放在Flickable中
Flickable {
anchors.centerIn: parent
width: 300
height: 300
contentWidth: 1000
contentHeight: 1000
clip: true
// INSERT CUSTOM GRID COMPONENT HERE
}
这将按预期在内容内部显示300x300的视图,但是一旦您开始浏览内容以查看内容的不同部分,您就会被边界所阻止,无法看到这些边界之外的任何内容。您可以在拖动时看到它,但是一旦松开,内容的视图就会重置为这些范围。
那么我该如何消除这些界限? (或者是否有其他组件更适合我的应用?)
这是一个gif,它显示了如何拖动内容越过边界,但是一旦发布,它只会上升到边界,而不会更远
答案 0 :(得分:0)
我发现了问题,我错误地设置了Flickable的contentWidth和contentHeight,此示例工作正常。 contentWidth和contentHeight决定了可以滑动的范围。