如何使QML ListView不可滑动?

我想知道ListView是否有任何方式表现得像桌面控件一样,而不是对滚动鼠标拖动作出反应?如何使QML ListView不可滑动?

我知道interactive属性,但我仍然希望ListView对点击,鼠标滚轮,箭头键有反应,并且有ScrollBar

回答:

对于初学者来说,设置interactivefalse几乎会使视图不动。

有一个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

回到顶部