QTimeLine類解釋

來源:互聯網
上載者:User

其實動畫的本質就是在每一定時間間隔內顯示一幀映像,當這個間隔較短的時候人眼就感覺不出來了,覺得看到的是連續的影像。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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.