我想知道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
来捕获车轮事件。请注意,您不必做任何特别的事情来启用单击项目以进行非相互作用视图,无论视图是否互动,它都可以。