如何删除Flickable QML组件的边界?

时间:2019-05-23 10:07:05

标签: qt qml

我想显示大量内容,例如,在一个小于内容的窗口内显示多个图像的网格,类似于地理地图,但我希望使用自己的组件作为“地图”。对于这个最小的工作示例,让我们为内容提供一个图像网格,该图像网格的总大小为1000x1000,而只有300x300的窗口可以浏览。

我尝试了2种不同的方法,但是我只会详细介绍第一种方法,因为这是使我最接近期望结果的方法:

  1. 我尝试了Flickable组件,但是无法将内容移动到预定义的范围之外,从而使用户无法移动视图以显示内容的所有部分。因此,我现在正在考虑的最简单的解决方案是,是否可以从Flickable组件中删除这些边界,但是如何?

  2. 我也尝试过使用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,它显示了如何拖动内容越过边界,但是一旦发布,它只会上升到边界,而不会更远

1 个答案:

答案 0 :(得分:0)

我发现了问题,我错误地设置了Flickable的contentWidth和contentHeight,此示例工作正常。 contentWidth和contentHeight决定了可以滑动的范围。