私はQGraphicsオブジェクトを使用して、それらの間に矢印付きのボックスを表示しています。私は、一方の端から始まり他方の端に向かう矢印/線でアニメをしたい。QTimelineによるアニメーション
QTimeLineの実行中に矢印の開始位置と終了位置が変更されない場合、アニメーションが効果的です。つまり、ビューを静的にします。 しかし、ユーザーはボックスをドラッグすることができます(したがって、矢印を再描画する)ので、QGraphicsItemAnimation内の開始位置と終了位置をリセットして、アニメーションが新しい矢印線と一致するようにする必要があります。
Arrowオブジェクトのペイントメソッドで開始位置と終了位置を更新しようとしましたが、アニメーションが狂ってしまいます(場所全体がランダムに反転します)。 QTimeLineオブジェクトがRUNNING状態になったときにアニメーションの位置を変更したためです。
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);
}
}
QGraphicsItemAnimationの開始位置と終了位置(0と1)をどのように動的に変更する必要がありますか?
最終的には、ボックスをドラッグして矢印をフォローする(現在は機能している)と、新しい矢印ルートに沿ってアニメーションを続けるようにします。
もしそれができないのであれば、私はドラッグをキャプチャし、矢印のアニメーションを停止するまでユーザーが解放してからリセットすると思う方法を見つけ出す必要があります...?