一個應用程序通常包含多個動畫,例如,你可能希望同時移動許多graphic items或者一個個按照串行的方式的移動他們
QAnimationGroup:動畫組父類,以包含其它animations,這樣這些animations可以串行或者並行的觸發了
QSequentialAnimationGroup:串行動畫
QParallelAnimationGroup:並行動畫
QPropertyAnimation:動畫類,第二個參數代表窗口樹形,可以為size、windowOpacity、gemotry等等
1、淡入淡出
構造函數中寫入如下代碼:
1 animation = new QPropertyAnimation(this, "windowOpacity"); 2 3 animation->setDuration(3000);//動畫總時間 4 5 animation->setStartValue(1);//開始不透明 6 7 animation->setEndValue(0);//接觸時透明 8 9 animation->setEasingCurve(QEasingCurve::Linear);//漸變時間曲線 10 11 connect(animation, &QPropertyAnimation::finished 12 13 , this, [this]{close(); });//動畫結束關閉窗口
setStartValue方法和setEndValue方法的參數依據類構造函數中的propertyName參數,即第二個參數
常用方法:
start:啟動動畫
pause:暫停動畫
stop:停止動畫
setKeyValueAt(qreal, const QVariant &),插入關鍵數據,到了參數1指定的位置,會出現參數2的狀態
setCurrentTime(int):設置當前動畫時間
setDirection(Direction):動畫方向,Forward、Backward
stateChanged(QAbstractAnimation::State, QAbstractAnimation::State):狀態改變信號
2、最小化時逐漸縮小
注意:應該在窗口外部使用,而不是構造函數中
1 QPropertyAnimation *minimumAnimation = 2 3 new QPropertyAnimation(videoWidget, "geometry"); 4 5 minimumAnimation->setDuration(200); 6 7 minimumAnimation->setEndValue( 8 9 QRect(mapToGlobal(pos()).x() + videoCount * videoWidget->width() 10 11 , mapToGlobal(pos()).y(), 0, 0) 12 13 ); 14 15 minimumAnimation->start();
如果您覺得文章不錯,不妨給個
打賞,寫作不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!!


