我有一个 ListView 。如果我单击一个单元格,该特定单元格需要通过一个小的滚动动画移动到中心。使用我的代码,单击的单元格将在没有任何动画的情况下到达中心。
是否可以为此添加动画?
我把我的代码放在下面:
ListView {
id: source_list
width: 1080
height: 480
spacing: 50
model: mediaSongsModel
delegate: mediaSongsDelegate
focus: true
interactive: true
clip: true
highlightMoveDuration: 50
snapMode: ListView.SnapToItem
boundsBehavior:Flickable.StopAtBounds
preferredHighlightBegin: 260/scaleFactor
preferredHighlightEnd: 260/scaleFactor
highlightRangeMode: ListView.StrictlyEnforceRange
}
Component {
id: mediaSongsDelegate
Item {
id: wrapper
width: 1080
height: 200
MouseArea {
anchors.fill: parent
onClicked: {
source_list.currentIndex = index
source_list.positionViewAtIndex(index,ListView.Center)
}
}
}
}
最佳答案
如果当前项应始终位于 View 的中心或特定区域内,则可以使用 preferredHighlightBegin
和 preferredHightlightEnd
属性来定义该区域。highlightRangeMode
的值控制如果是,如果是,这适用的严格程度。例如。如果第一个项目是当前项目并且值为 StriclyEnforeRange
则该项目将在指定区域内,即使这意味着比正常的“滚动到顶部”滚动得更远。
这样的事情应该工作
ListView {
preferredHighlightBegin: height / 2 - 100 // 100 being item height / 2
preferredHighlightEnd: height / 2 + 100 // 100 being item height / 2
highlightRangeMode: ListView.StrictlyEnforceRange
}
关于qt - 如何将 ListView 滚动到当前项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818593/