QML OnHighligt运动完成

时间:2012-06-22 07:27:18

标签: qt qml

我有这个ListView:

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,但动画完成时似乎都没有触发它们。

2 个答案:

答案 0 :(得分:1)

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

基本思想是阻止视图移动突出显示本身:

highlightFollowsCurrentItem: false

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

答案 1 :(得分:0)

我相信这是不可能的。 highlightPosAnimatorhighlightSizeAnimatorQDeclarativeListView私有实施的一部分,“用户”代码无法访问。

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