2016-07-16 18 views
1

QAbstractListModelから継承するカスタムC++モデルクラスがあります。そして私はGridViewを使用しています。 したがって、GridViewは、QAbstractItemModel::rowCount()と多くのコンポーネントを構成します。しかし、代理人として私は 複雑なコンポーネントを使用します。 「複雑」とは、アニメーションがあることを意味します。モデル/デリゲートコンポーネント共通部分の表示

property bool animate: false 
delegate: Rectangle { 
    SequentialAnimation on color { 
     running: view.animate 
     loops: Animation.Infinite 
     ColorAnimation { from: "blue"; to: "#33FFFF"; duration: 1200 } 
     ColorAnimation { from: "#33FFFF"; to: "blue"; duration: 1200 } 
    } 
} 

私がお聞きしたいのは、私は、デリゲート1層までの共通部分を移動させ、結合し、代わりに、不要なアニメーションを構築するシグナルとスロット機構オーバーヘッドを我慢 は、すべてのモデルに をオブジェクトを使用するものであり、要素?

delegate: Rectangle { 
    color: view.delegateColorAnimation 
} 
property bool animate: false 
property color delegateColorAnimation 
SequentialAnimation on delegateColorAnimation { 
    running: animate 
    loops: Animation.Infinite 
    ColorAnimation { from: "blue"; to: "#33FFFF"; duration: 1200 } 
    ColorAnimation { from: "#33FFFF"; to: "blue"; duration: 1200 } 
} 

私は信号とスロットメカニズムのオーバーヘッドが無視できる程度である知っているが、私はので、アニメーションのための特別な 構文(Animation on property)で混乱しています。背景に のバインディングメカニズムがまだ実行されていますか?それとも魔法はありますか?

この構文に魔法がない場合でも、プロパティを更新するには依然としてバインディングメカニズムが使用されていますが、 おそらく2番目のオプションが有効でしょうか?

答えて

1

構文「オン」ここで説明されていますhttp://doc.qt.io/qt-5/qtqml-cppintegration-definetypes.html#property-value-sources

頃は、それはすべてのキャッシュの使い勝手についてですので、メモリの少ないを通過することは優れているので、私は、以下のAnimationオブジェクトのために行くだろう。

第2のオプションはアニメーションを1回計算し、最初のオプションは各アイテムごとに計算します。

関連する問題