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