Ich möchte eine animierte Pfeilform-Schaltfläche anzeigen.Animation auf einem QPainterPath-Objekt
Um es zu zeichnen, erstelle ich eine Klasse, die QGraphicsObject
erbt und die QPainterPath
Klasse verwenden.
Ich zeichne es in QGraphicsScene
und animiere es mit der Eigenschaft geometry
, die in der MyArrow-Klasse definiert ist.
Sie können den gesamten Code finden Sie hier: https://github.com/TaiZzZ/arrowAnimation
Mein Problem ist folgendes:
Der Pfeil belebt (was bedeutet, es bewegt sich nach rechts und kommt zurück), aber gemalt bleibt während der Bewegung. Hast du eine Ahnung warum?
Ps: Ich habe das gleiche Verhalten mit QState Machine, so denke ich, das Problem kommt nur von der Art, wie ich meine Pfeile zeichnen.
habe ich versucht, zwei verschiedene Dinge:
die Bezier-Kurve in Zeile ändern, ist es das Problem nicht beheben.
Statt den Weg der Zeichnung, zog ich ein Rechteck (die
boundingRect()
) (So habe ich nur geändertdrawPath(path)
), und es funktioniert
So zu schließen, kommt der Fehler von QPainterPath .. . aber warum ?
EDIT:
Hier sind Bilder, mein Problem zu veranschaulichen:
Beachten Sie, dass es nicht mehr anti-alliased ist ...
Was meinen Sie mit „bleibt gemalt während der Bewegung“? Beachten Sie auch, dass Ihr Github Repo unvollständig zu sein scheint - ich bekomme "WARNING: Fehler beim Finden von: mainwindow.ui", wenn ich 'qmake' starte. –
In der Tat habe ich diese Datei vergessen, jetzt sollte es richtig funktionieren. "bleibt während der Bewegung gemalt" ist nicht sehr klar, aber ich weiß nicht, wie ich das Problem in Kürze erklären soll! Vielleicht ist die beste Option, Bilder zu haben, bitte sehen Sie sich die Bilder an. – TaiZzZ