7

私のアプリケーション UI では、QML リストビューに多数の要素を表示します。そのうちの 1 つが削除されると、その上の要素の後ろにアニメーションでスライドするはずです。これを実現するコードは、Qt ドキュメントのこのサンプルと非常に似ていますyが、代わりに座標をアニメーション化しscale、値をデクリメントして、要素がその上の要素の前ではなく後ろにzスライドするようにする必要があります。

Component {
    id: delegate
    Item {
        ListView.onRemove:
            SequentialAnimation {
                // enable delayed removal
                PropertyAction {
                    target: wrapper
                    property: "ListView.delayRemove"
                    value: true
                }
                // make box slide up behind rather
                // than in front of the box above
                PropertyAction {
                    target: wrapper
                    property: "z"
                    value: wrapper.z - 1
                }
                NumberAnimation {
                    target : wrapper
                    property : "y"
                    from : wrapper.y
                    to   : wrapper.y - wrapper.height
                    duration    : style.removeTransitionDuration
                    easing.type : style.removeTransitionType
                }
                // disable delayed removal
                PropertyAction {
                    target: wrapper
                    property: "ListView.delayRemove"
                    value: false
        }
    }
}

このコードは基本的に機能しますが、大きな欠陥が 1 つあります。削除される要素が上にスライドする間、その下の要素は元の場所にとどまり、要素が完全に消えた後にのみ新しい位置に「ジャンプ」します。削除される要素が上にスライドしている間、それらを上に移動させたいと思います。

このサンプルに示すようにを指定して、要素の動きをy方向にアニメーション化しようとしました。これは、プロパティが明示的に (ハンドラーなどで)設定されている場合に機能しますが、要素が削除されたために暗黙的に変更された場合はアニメーションがありません。Behavior on yPropertyAnimationyMouseArea::onClickedy

また、ダイナミック リスト ListView の例で行われているheightorなどの他のプロパティをアニメーション化し、それを と組み合わせてみましたが、要素がやや複雑であるため、結果は単純に驚くほどに見えます。上にスライドします。scaleopacity

下の要素を上にスライドさせるにはどうすればよいですか? これはQt 4.8 / Qt Quick 1.1でまったく可能ですか? Qt 5/Qt Quick 2.0 では、この特定の問題に関して何か改善点はありますか?

4

1 に答える 1

3

ListView には、Qt Quick 2.0 でいくつかの新しいプロパティがあります。

  1. remove : "このプロパティは、ビューから削除されたアイテムに適用するトランジションを保持します。"
  2. removeDisplaced : "このプロパティは、ビュー内の他のアイテムの削除によって置き換えられたビュー内のアイテムに適用するトランジションを保持します。"

removeDisplaced は、探しているプロパティである必要があります。残念ながら、Qt Quick 1.0 での方法はわかりません。

于 2013-09-11T09:19:37.070 に答える