Qt 图元(QGraphicsItem)动画效果
1. Qt动画效果的幕后英雄:QTimeLine_cuteqt的博客-CSDN博客
2. QT 状态机详解 statemachine (转) - 走看看 (zoukankan.com)
3. Qt 之 QPropertyAnimation_水军总督的博客-CSDN博客_qpropertyanimation
==》实操:
1 void MainWindow::sl_addAnimationAct() 2 { 3 //connect(timeline,SIGNAL(frameChanged(int)),yourobj,SLOT(yourobjslot(int))); // 每次变帧都会发送信号 4 //setUpdateInterval(int interval) // 该函数用于控制更新动画的时间间隔 5 6 StarItem *star = new StarItem; // 自定义的继承自 QGraphicsItem 的图元 7 star->setPos(-200, 0); //【起点】 8 9 QTimeLine *timeLine = new QTimeLine(4000); // 动画持续时间 Tad 。 10 //timeLine->setCurveShape(QTimeLine::SineCurve); // Tad 内, 以正弦速移帧, 即先正向变速移动, 再反向变速移动 11 timeLine->setCurveShape(QTimeLine::LinearCurve); // Tad 内, 以线速移帧, 即平稳向前移动到终点 12 timeLine->setLoopCount(0); // 循环次数, 0 为无限循环 13 timeLine->setFrameRange(0, 100); // 帧范围 14 15 QGraphicsItemAnimation *anima = new QGraphicsItemAnimation; 16 anima->setItem(star); 17 anima->setTimeLine(timeLine); 18 //================↓ 19 #if 0 20 int y =(qrand()%400)-200; 21 for(int i=0;i<400;i++) 22 { 23 //anima->setPosAt(i/400.0,QPointF(i-200,y)); 24 anima->setPosAt(1,QPointF(i-200,y)); 25 } 26 #endif 27 anima->setPosAt(0.9, QPointF(200, 0)); //【终点】, 0.9 为驻留比例, 即运动时间 = Tad * 0.9, 到达终点时驻留时间 = Tad * (1 - 0.9) 28 //================↑ 29 timeLine->start(); 30 31 scene->addItem(star); 32 }