QT動畫時間軸控制 QTimeLine


QTimeLine類提供用於控制動畫的時間軸

比如控制進度條的增長,圖片,窗口的旋轉,平移等等

QTimeLine有一個frameChanged(int)信號

當調用QTimeLine::start()

frameChanged(int val)里面的val值會從0到50開始遞增

(前提是需要設置范圍如timeLine->setFrameRange(0, 50); 也需要設置QTimeLine變化的時間timeLine = new QTimeLine(1000, this)

可以在槽函數中接受這個val值

一般使用如:

transform.translate(a, b);

transform.rotate(c);

transform.scale(d, e);

以上(a,b,c,d,e)都可以通過val的值代替或者和val做某種運算后得到

 

QTransform  QTransform類指定坐標系統的2D轉換

其中  translate() rotate() 倆函數組合實現圖片旋轉 , translate()設置旋轉中心 , rotate() 實現旋轉)

translate(設置坐標中心), scale(設置縮放比例), shear(設置b變形比例), rotate (設置旋轉角度)

 

 

 

 

例子: 當點擊按鈕時進度條的值會從0100使用時間是1

QProgressBar *progressBar = new QProgressBar (this);

progressBar->setRange(0, 100);

 

  // 指定變化目標是誰以及變化的時間

  QTimeLine *timeLine = new QTimeLine(1000, this);//設置變化時間是1秒

  //指定在1秒內變化的范圍 如果是(0,50)則1秒內進度條從0增加到50

  //timeLine->setFrameRange(0, 50);

 

  //設置動畫的次數

  timeLine->setLoopCount(3);//進度條加載3次

  //設置動畫的時間快慢,范圍以某種速度增長(先快后慢/或者先慢后快)

  timeLine->setCurveShape(QTimeLine::EaseInCurve);

  //設置動畫的方向(如進度條是從0增到100還是100降到0)

  timeLine->setDirection(QTimeLine::Backward);

  //綁定信號來改變進度條的值

  connect(timeLine, SIGNAL(frameChanged(int)), progressBar, SLOT(setValue(int)));

  //此按鈕用來調用QTimeLine::start()函數

 

 //需要指定開始,一般觸發式,或者使用定時器

 QPushButton *pushButton = new QPushButton(tr("Start animation"), this);

  connect(pushButton, SIGNAL(clicked()), timeLine, SLOT(start()));

 

 //這個可以切換時間軸的方向,也就是動畫運動的方向

 timeLine-> toggleDirection();


免責聲明!

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



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