PyQt: QGraphicsItemAnimation с setPosAt - PullRequest
0 голосов
/ 23 июня 2011

У меня небольшая проблема, так как я не могу создать простую анимацию setPos, переопределив метод setPos следующим образом:

def setPos(self, pos):                                                                                                                                                                                          
    print('from %s to %s' % (self.scenePos(), pos))                                                                                                                                                             
    timer = QTimeLine(5000)                                                                                                                                                                                     
    timer.setFrameRange(0, 100)                                                                                                                                                                                 
    animation = QGraphicsItemAnimation()                                                                                                                                                                        
    animation.setItem(self)                                                                                                                                                                                     
    animation.setTimeLine(timer)                                                                                                                                                                                
    x_step = (pos - self.scenePos()).x() / 200                                                                                                                                                                  
    y_step = (pos - self.scenePos()).y() / 200                                                                                                                                                                  
    for i in range(200):                                                                                                                                                                                        
        animation.setPosAt(i/200, self.scenePos() + QPointF(i * x_step, i * y_step))                                                                                                                            
    timer.start()    

Заранее спасибо, b52

Ответы [ 2 ]

1 голос
/ 13 октября 2011

@ robe: QPropertyAnimation требует, чтобы объявленный класс был QObject, и я считаю, что QGraphicsItem - нет.

0 голосов
/ 11 октября 2011

Почему бы не использовать QPropertyAnimation ?. С помощью этого класса вы можете создавать анимации для любых свойств объектов.

 QPropertyAnimation * animationPos = new QPropertyAnimation(Object, propertyName);

  animationPos->setDuration(miliseconds);
  animationPos->setStarValue(startValueForProperty);
  animationsPos->setEndValue(endValueForProperty);

Вы должны попробовать, и вы избежите многих конфликтов.

...