Qt 我正沿着这条路走

Qt 我正沿着这条路走,qt,animation,graphics,qgraphicsview,Qt,Animation,Graphics,Qgraphicsview,是否可以设置QGraphicsItem的动画,使其沿着qgraphicscene/QGraphicsView内的某条路径移动 比如,白点沿着齿轮移动,一条闭合曲线 如果是这样,那怎么办呢?找到了一个解决方案: QGraphicsItem *ball = new QGraphicsEllipseItem(0, 0, 20, 20); QTimeLine *timer = new QTimeLine(5000); timer->setFrameRange(0, 100); QGraphic

是否可以设置
QGraphicsItem
的动画,使其沿着
qgraphicscene
/
QGraphicsView
内的某条路径移动

比如,白点沿着齿轮移动,一条闭合曲线

如果是这样,那怎么办呢?

找到了一个解决方案:

QGraphicsItem *ball = new QGraphicsEllipseItem(0, 0, 20, 20);

QTimeLine *timer = new QTimeLine(5000);
timer->setFrameRange(0, 100);

QGraphicsItemAnimation *animation = new QGraphicsItemAnimation;
animation->setItem(ball);
animation->setTimeLine(timer);

animation->setPosAt(0.f / 200.f, QPointF(0, 0));
animation->setPosAt(10.f / 200.f, QPointF(0, 30));
animation->setPosAt(20.f / 200.f, QPointF(20, 30));
animation->setPosAt(30.f / 200.f, QPointF(20, 20));
animation->setPosAt(40.f / 200.f, QPointF(30, 20));
animation->setPosAt(50.f / 200.f, QPointF(30, 30));
animation->setPosAt(60.f / 200.f, QPointF(40, 30));
animation->setPosAt(70.f / 200.f, QPointF(40, 60));
animation->setPosAt(80.f / 200.f, QPointF(50, 60));
animation->setPosAt(90.f / 200.f, QPointF(50, 0));
animation->setPosAt(100.f / 200.f, QPointF(70, 0));
animation->setPosAt(110.f / 200.f, QPointF(70, 10));
animation->setPosAt(120.f / 200.f, QPointF(80, 10));

QGraphicsScene *scene = new QGraphicsScene();
scene->setSceneRect(0, 0, 250, 250);
scene->addItem(ball);

ui->graphicsView->setScene(scene);

timer->start();