Если я выбираю элемент в моем ListView с заголовком, я хочу, чтобы список прокручивался вверх в короткой анимации, чтобы поместить текущий выбранный элемент в верхнюю часть списка, а заголовок перемещается вверх и не отображается.Это работает со следующим кодом.Однако, когда я хочу прокрутить вниз, чтобы снова увидеть заголовок списка, он всегда возвращается к верхнему (первому) элементу списка.Это, скорее всего, вызвано highlightRangeMode: ListView.StrictlyEnforceRange
.Но как я могу избежать этого?
Я попытался highlightRangeMode: ListView.ApplyRange
, что позволило мне снова прокрутить заголовок, но это привело к тому, что элементы часто не перемещались в верх, что недопустимо.Я пробовал headerPositioning: ListView.PullBackHeader
, но это дает мне те же результаты, что и headerPositioning: ListView.PullBackHeader
ListView {
id: list
anchors.fill: parent
clip: true
spacing: 11
focus: true
highlightMoveDuration: 400
snapMode: ListView.SnapToItem
preferredHighlightBegin: 0
preferredHighlightEnd: 100
highlightRangeMode: ListView.StrictlyEnforceRange
headerPositioning: ListView.InlineHeader
header: Rectangle {
id: headerBar
height: 116
color: "blue"
anchors {
left: parent.left
right: parent.right
leftMargin: 12
rightMargin: 12
}
}
model: myModel
delegate: ListItem {
height: 56
width: list.width
color: "red"
onListItemClicked: {
list.currentIndex = index
}
}
}
Я ожидаю, что выбранные элементы в ListView всегда прокручиваются к началу списка (внутри preferredHighlightBegin
и preferredHighlightEnd
) и что я могу прокрутить вручную вниз, чтобы увидеть заголовок ListView.Кто-нибудь знает решение?
Я не вижу решения в Как я могу анимировать прокрутку в QML ScrollView? , так как я не хочу использовать полосу прокрутки.