Ich verwende QGraphics Objekte, um Boxen mit Pfeilen zwischen ihnen anzuzeigen. Ich möchte Animation auf diesen Pfeilen/Linien, die an einem Ende beginnt und geht zu den anderen.Animation mit QTimeline
Die Animation funktioniert gut, wenn sich die Start- und Endpositionen des Pfeils während der Ausführung von QTimeLine nicht ändern, d. H. Ich lasse die Ansicht statisch. Aber da der Benutzer die Boxen umher ziehen kann (und damit die Pfeile neu zeichnen), muss ich die Start- und Endposition innerhalb von QGraphicsItemAnimation zurücksetzen, damit die Animation der neuen Pfeillinie entspricht.
Ich habe versucht, die Start- und Endpositionen in der Malmethode des Arrow-Objekts zu aktualisieren, aber das macht die Animation einfach verrückt (sie dreht sich zufällig überall herum). Ich nehme an, es liegt daran, dass ich die Animationspositionen geändert habe, als das QTimeLine-Objekt im Zustand RUNNING war.
void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
{
...
///update the arrow to have a new source and destination, draw arrow, etc
...
if (mAnimate)
{
mAnimationObj->setPosAt(0, mSourcePoint);
mAnimationObj->setPosAt(1, mDestPoint);
}
}
Wie soll ich dynamisch den Start QGraphicsItemAnimation ändern und Endpositionen (0 und 1)?
Für das Endprodukt möchte ich, dass der Benutzer in der Lage ist, die Boxen zu ziehen, die Pfeile folgen (was derzeit funktioniert) und die Animation entlang der neuen Pfeilroute fortsetzen.
Wenn das nicht möglich ist, dann muss ich eine Möglichkeit finden, das Ziehen zu erfassen und die Pfeilanimation zu stoppen, bis der Benutzer freigibt und dann rate ich es zurückzusetzen ...?