其實動畫的本質就是在每一定時間間隔內顯示一幀映像,當這個間隔較短的時候人眼就感覺不出來了,覺得看到的是連續的影像。Qt為開發動畫效果的人員提供了一個很好的時間控制類QTimeLine.
QTimeLine的最簡單用法是
1 QTimeLine timeline=new QTimeLine(1000);
2 timeLine->setFrameRange(0, 100);
3 connect(timeline,SIGNAL(frameChanged(int)),yourobj,SLOT(yourobjslot(int)));
4 timeline->start();
解釋:
1. 建立的時間軸持續時間長度,參數值是毫秒數,1000就是1秒
2. 在這段時間軸內,建立的輸出值範圍。也就是第三行中frameChanged訊號裡傳出的參數值範圍
3. QTimeLine的預設時間間隔是40ms(也就是1秒25幀),每個間隔會發出一個frameChanged()的訊號,此處將該訊號串連到你能控制動畫效果的對象和槽上。
4. 啟動timeline後,每個時間間隔的frameChanged()訊號才能正常發出。
當然還有一些複雜的參數設定可以更好的控制你的效果。
setLoopCount(int count)該函數控制了動畫的重複次數。預設是1,如果設定成0則表示無限迴圈。
setUpdateInterval(int interval)該函數用於控制更新動畫的時間間隔。
相當於設定了時間總數和單次時間的QTimer
是對QTimer的擴充,封裝
另外提醒一下,有時候對間隔的設定可能達不到預定的次數,因為程式的執行效率無法達到這樣的次數。所以對次數的設定 要合理!
舉個例子吧:
m_timeLine = new QTimeLine(1000);
m_timeLine->setFrameRange(0,100);
m_timeLine->setUpdateInterval(1);
這樣的定時器,在1000ms內,只能重複執行了56次(有時候是55次).....以後用的時候注意!
補充:setFrameRange和setUpdateInterval沒有直接關係,第一個是活動範圍,後面的是間隔範圍;使用的時候區分。
m_timeLine->setFrameRange(0,100);
m_timeLine->setUpdateInterval(1);