qt 窗口動畫


窗口動畫

編輯刪除轉載 2015-10-10 14:50:27
標簽:qt漸變動畫

一個應用程序通常包含多個動畫,例如,你可能希望同時移動許多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(); });​//動畫結束關閉窗口
View Code

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();
View Code

 

如果您覺得文章不錯,不妨給個 打賞,寫作不易,感謝各位的支持。您的支持是我最大的動力,謝謝!!! 

 

  


很重要--轉載聲明

  1. 本站文章無特別說明,皆為原創,版權所有,轉載時請用鏈接的方式,給出原文出處。同時寫上原作者:朝十晚八 or Twowords
  2. 如要轉載,請原文轉載,如在轉載時修改本文,請事先告知,謝絕在轉載時通過修改本文達到有利於轉載者的目的。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM