2012-02-06 4 views
3

Est-il possible d'animer un QGraphicsItem de manière à se déplacer le long d'un chemin au sein de QGraphicsScene/QGraphicsView?QGraphicsItem se déplaçant le long du chemin

Quelque chose comme this demo, où le point blanc se déplace le long de l'engrenage - une courbe fermée.

Si c'est le cas, comment cela pourrait-il être fait?

Répondre

2

trouvé une solution here:

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(); 
Questions connexes