
在图片中,Test、Test 1和Test 2在ListView中。在本例中,突出显示Test元素。如何修改视图行为以确保当前(高亮显示)项始终位于列表的中间?我想要达到的目标如下所示:

发布于 2015-04-16 10:18:21
您只需要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
}
}发布于 2015-04-16 07:26:03
您可以查看ListView的positionViewAtIndex方法,看看这是否有帮助。
https://stackoverflow.com/questions/29666456
复制相似问题