Qt 圖元(QGraphicsItem)動畫效果
阿新 • • 發佈:2022-03-15
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 }