如何使QML ListView不可滑动?
我想知道ListView
是否有任何方式表现得像桌面控件一样,而不是对滚动鼠标拖动作出反应?如何使QML ListView不可滑动?
我知道interactive
属性,但我仍然希望ListView
对点击,鼠标滚轮,箭头键有反应,并且有ScrollBar
。
回答:
对于初学者来说,设置interactive
到false
几乎会使视图不动。
有一个keyNavigationEnabled
属性,这似乎不工作在这一刻(this critical bug)。
所以需要做一些额外的工作来获得你想要的工作:
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
用于捕获轮事件。请注意,您无需执行任何特殊操作即可为非交互式视图启用项目,但无论视图是否为交互式,它都可以工作。
以上是 如何使QML ListView不可滑动? 的全部内容, 来源链接: utcz.com/qa/264629.html