1. 程式人生 > 其它 >Qt 圖元(QGraphicsItem)動畫效果

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 }