Мне сложно понять, как работает функция setScaleAt в QGraphicsItemAnimation. Вот код, который я использую:
QGraphicsItem *item=scene.addEllipse(400, 300, 100, 100, QPen(), QBrush(Qt::SolidPattern));
QTimeLine *timeline=new QTimeLine(3000);
timeline->setFrameRange(0, 100);
QGraphicsItemAnimation *animation=new QGraphicsItemAnimation;
animation->setItem(item);
animation->setTimeLine(timeline);
for (int i=0; i<100; i++) {
animation->setScaleAt(i/100.0, i/100.0, i/100.0);
}
connect(timeline, SIGNAL(valueChanged(qreal)), animation, SLOT(setStep(qreal)));
timeline->start();
Все, что я хочу сделать, это отобразить точку в центре экрана, а затем развернуть ее до круга в течение 3 секунд. Этот код дает мне точку, которая появляется в левом верхнем углу, затем растет и одновременно перемещается в середину. Я пытался компенсировать это, устанавливая позицию на каждом шаге, но это кажется довольно запутанным. Должен быть более чистый способ сделать это.
Кроме того, оригинальный элемент отображается в течение доли секунды перед началом анимации, есть ли способ скрыть его по умолчанию, а затем отобразить для анимации?
Заранее спасибо.