3

我有这个列表视图:

ListView {
    id: topList
    focus: true
    width: parent.width
    height: parent.height
    preferredHighlightBegin: height - 70
    preferredHighlightEnd: height
    highlightMoveSpeed: 150
    highlight: Rectangle { width: theListView.width; height: 22; color: "yellow" }
    highlightRangeMode: ListView.StrictlyEnforceRange
}

现在,当我使用向上或向下箭头时,列表移动得很好。但是,当移动完成时,我想触发另一个动画。已尝试收听 onMovementEnded 和 onFlickEnded 但动画完成后似乎都没有触发它们。

4

2 回答 2

1

QtQuick 示例包括滚动您自己的示例:http: //doc.qt.nokia.com/4.7-snapshot/declarative-modelviews-listview-highlight-qml.html

基本思想是防止视图移动高光本身:

highlightFollowsCurrentItem: false

并使用动画使突出显示跟随 currentItem。您可能希望坚持使用 SmoothedAnimation 或 SpringAnimation,因为它们会在动画完成之前处理正在移动的目标位置。

于 2012-06-28T23:12:02.513 回答
0

我相信这是不可能的。highlightPosAnimator并且highlightSizeAnimatorQDeclarativeListView私有实现的一部分,不能被“用户”代码访问。

如果您需要自定义/组合高亮动画,看起来您必须自己动手。

于 2012-06-23T02:17:49.027 回答