我想知道ListView
是否有任何方式表现得像桌面控件,而不是滚动鼠标拖动?
我知道interactive
属性,但我仍然希望ListView
对点击,鼠标滚轮,箭头键做出反应,并且ScrollBar
。
答案 0 :(得分:3)
对于初学者来说,将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
捕获车轮事件。请注意,您无需执行任何特殊操作即可启用非交互式视图的项目,无论视图是否具有交互性,它都可以正常工作。