如何使QML listView不轻而易举



我想知道ListView是否有任何办法像桌面控件一样行事,而不是与滚动鼠标拖动反应吗?

我知道interactive属性,但我仍然希望ListView对单击,鼠标轮,箭头键做出反应,并具有ScrollBar

对于初学者,将interactive设置为false将几乎固定视图。

有一个keyNavigationEnabled属性目前似乎不起作用(这个关键的错误)。

因此,需要做一些额外的工作以使其按照您的需求工作:

  MouseArea {
    anchors.fill: ll
    onWheel: ll.flick(0, wheel.angleDelta.y * 5)
  }
  ListView {
    id: ll
    model: 50
    width: 50
    height: 200
    spacing: 5
    focus: true
    interactive: false
    boundsBehavior: Flickable.StopAtBounds
    Keys.onPressed: {
      if (event.key === Qt.Key_Up) flick(0, 500)
      else if (event.key === Qt.Key_Down) flick(0, -500)
    }
    delegate: Rectangle {
      width: 50
      height: 50
      color: "red"
      MouseArea {
        anchors.fill: parent
        onClicked: console.log("clicked")
      }
    }
  }

交互性是禁用的,手动实现了密钥导航,并使用背景MouseArea来捕获车轮事件。请注意,您不必做任何特别的事情来启用单击项目以进行非相互作用视图,无论视图是否互动,它都可以。

最新更新