Qt提供了類QPropertyAnimation來實現圖片的一些簡單的動畫操做效果。html
一、新建一個Qt空項目,同時添加資源文件,並在資源文件中添加圖片路徑。以後在main.cpp函數中添加如下代碼linux
1 #include<QApplication> 2 #include<QLabel> 3 #include<QPixmap> 4 #include<QPropertyAnimation> 5 6 int main(int argc, char *argv[]) 7 { 8 QApplication app(argc, argv); 9 QWidget *w= new QWidget;//定義窗口部件 10 w->resize(200, 200); 11 12 QPixmap pixmap = QPixmap("linux.png").scaled(30, 40);//定義圖片的寬高比例 13 QLabel *label = new QLabel(w);//將以前設置的窗口定義爲標籤 14 label->setPixmap(pixmap);//標籤中放置圖片 15 16 QPropertyAnimation *anim=new QPropertyAnimation(label,"pos");//pos爲label的位置屬性 17 anim->setDuration(5000);//移動時間爲5000ms 18 anim->setStartValue(QPoint(0, 160));//起始座標,該座標對應圖片左上角 19 anim->setEndValue(QPoint(170, 0));//終止座標,該座標對應圖片左上角 20 anim->setEasingCurve(QEasingCurve::OutBounce);//setEasingCurve ()函數選擇運行軌跡曲線。該行刪除後,運動軌跡爲直線,無特效 21 anim->start();//開始移動 22 23 w->show(); 24 return app.exec(); 25 }
二、運行程序以後,顯示以下app
三、擴展:多個動畫效果的實現函數
當涉及到兩幅圖片甚者多幅圖片的動畫效果時,須要使用動畫組類QSequentialAnimationGroup或QParallelAnimationGroup。前者實現的是串行動畫效果,即多個動畫一個接一個的發生,後者實現動畫並行效果,即多個動畫同時發生。動畫
1 QSequentialAnimationGroup group;//串行動畫 2 //QParallelAnimationGroup group;//並行動畫 3 group.addAnimation(anim1);//動畫1 4 group.addAnimation(anim2);//動畫2 5 group.start();
文章參考來源:http://www.hnmade.com/bbs/thread-12332-1-1.html,感謝分享!spa