如何让 QML ListView 不可轻弹?
How make QML ListView not flickable?
我想知道是否有任何方法可以让 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
用于捕获车轮事件。请注意,您无需执行任何特殊操作即可启用非交互式视图的项目点击,无论视图是否为交互式视图,它都可以正常工作。
我想知道是否有任何方法可以让 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
用于捕获车轮事件。请注意,您无需执行任何特殊操作即可启用非交互式视图的项目点击,无论视图是否为交互式视图,它都可以正常工作。