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 (設置旋轉角度)
例子: 當點擊按鈕時進度條的值會從0到100使用時間是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();