2016-07-16 6 views
1

Ich habe eine benutzerdefinierte C++ - Modellklasse, die von QAbstractListModel erbt. Und als Ansicht verwende ich . So konstruiert so viele Komponenten wie QAbstractItemModel::rowCount(). Aber als Delegierter I verwenden Sie eine komplexe Komponente. Mit "komplex" meine ich, dass es Animationen hat.Model/View Delegierte Komponente gemeinsame Teile

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 } 
    } 
} 

Was ich will, ist fragen, werde ich die gemeinsamen Teile der Delegierten eine Schicht nach oben zu bewegen und verwenden Bindung und mit dem Signal und Schlitze Mechanismus Kopf setzen stattdessen unnötige Animation zu konstruieren Objekte für alle Modell Elemente?

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 } 
} 

Ich weiß Signal und Schlitze Mechanismus Kopf vernachlässigbar ist, aber ich bin verwirrt wegen der besonderen Syntax für Animation (Animation on property). Gibt es noch einen Bindemechanismus, der auf dem Hintergrund läuft? Oder gibt es Magie?

Wenn es keine Magie für diese Syntax gibt, und das Aktualisieren der Eigenschaft immer noch auf dem Bindungsmechanismus beruht, wäre wahrscheinlich die zweite Option die bessere? ?

Antwort