在图片Test
中,Test 1
和Test 2
位于ListView
。在这种情况下,Test
元素会突出显示。如何修改视图行为以确保当前(突出显示的)项始终位于列表的中间?我希望实现的目标如下图所示:
答案 0 :(得分:12)
highlightRangeMode
和preferredHighlightBegin
只需要preferredHighlightEnd
。来自文档:
滚动列表时,这些属性会影响当前项的位置。例如,如果当滚动视图时当前所选项目应保留在列表中间,请将preferredHighlightBegin和preferredHighlightEnd值设置为中间项目的顶部和底部坐标。如果以编程方式更改currentItem,列表将自动滚动,以便当前项位于视图的中间。此外,无论是否存在突出显示,都会发生当前项索引的行为。
以下是水平ListView
的完整示例,当前项目位于中心。
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
width: 300
height: 150
visible: true
ListView {
anchors.fill: parent
spacing: 5
model: 20
delegate:
Rectangle {
width: 30
color: ListView.view.currentIndex === index ? "red" : "steelblue"
height: ListView.view.height
Text {
anchors.centerIn: parent
text: index
font.pixelSize: 20
}
}
orientation: Qt.Horizontal
preferredHighlightBegin: 150 - 15
preferredHighlightEnd: 150 + 15
highlightRangeMode: ListView.StrictlyEnforceRange
}
}
答案 1 :(得分:0)
您可以查看ListView的positionViewAtIndex
方法,看看是否有帮助。