作者:fearlazy。 有需要該源碼的點擊關注後發私信。
一、思路
使用Qt的Graphics View Framework可以非常容易實現翻轉的效果。該框架中的item可以通過設置QGraphicsRotation實現沿x軸、y軸和z軸(垂直於屏幕)方向上的旋轉。再配合上動畫便能達到上圖的效果。
二、關鍵代碼
1.既然是基於圖形視圖框架,那view是必不可少的。從基類中派生出我們的視圖類FlipView:
FlipView : public QGraphicsView
在這個demo中視圖和場景都不是主角。場景無需做其他設置,視圖也只是做了一些簡單的設置即可。
2.demo的主角,圖片Item從QGraphicsObject中派生,其主要成員變量如下:
class Picture : public QGraphicsObject
//主要成員變量:
QList<QPixmap> m_pixmaplist; //圖片列表
int m_index; //當前顯示的圖片的下標
QPropertyAnimation* m_roateAnimation; //m_itemRotation的動畫
QParallelAnimationGroup* m_animationGroup; //並行動畫組,包括m_rotateAnimation和item的縮放動畫
QGraphicsRotation* m_itemRotation; //旋轉
在構造函數中做設置變換:
在構造函數中的設置已經能夠實現圖片的翻轉效果,為了讓翻轉效果更逼真,我們在旋轉到90度左右(圖片與屏幕垂直)時換一張圖片顯示,好像兩張圖片剛好是正反兩面。
在旋轉動畫的槽函數中進行判斷: