我想知道ListView
是否有任何方法可以像桌面控件一样运行,而不对鼠标拖动的滚动做出反应?
我知道interactive
属性,但我仍然希望ListView
对单击、鼠标轮、箭头键和有一个ScrollBar
做出反应。
发布于 2016-12-30 18:35:23
首先,将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
捕获轮毂事件。请注意,您不需要做任何特殊的操作来启用非交互式视图的项目,无论视图是交互式的还是非交互式的,它都能工作。
https://stackoverflow.com/questions/41398425
复制相似问题