Qt動畫效果的幕後英雄 QTimeLine

2021-07-07 08:27:46 字數 1650 閱讀 9775

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

在qtimeline所設定的持續時長過去後,相應的會發出乙個finished()的訊號,你可以在接收到這個訊號以後做一些掃尾的工作。

另外還有乙個別緻的選項:

setcurveshape

(curveshape shape),該選項用於控制間隔輸出數值的乙個變化規律。

curveshage現有的選項是

qtimeline::easeincurve 0 the value starts growing slowly, then increases in speed.

qtimeline::easeoutcurve 1 the value starts growing steadily, then ends slowly.

qtimeline::easeinoutcurve 2 the value starts growing slowly, then runs steadily, then grows slowly again.

qtimeline::linearcurve 3 the value grows linearly (e.g., if the duration is 1000 ms, the value at time 500 ms is 0.5).

qtimeline::sinecurve 4 the value grows sinusoidally.

qtimeline::cosinecurve 5 the value grows cosinusoidally.

不多加解釋了,2是預設值。因為即使沒有這個選項,如果只輸出均勻數(選項3),我們還是可以自己對資料進行二次加工,生成我們想要的任意規律的數字。

利用qtimeline我們很容易實現一些影象消隱的效果,只需要你在每個間隔結束後顯示影象消隱過程中不同階段的乙個定格即可。這裡就有乙個很好的例子,短短300余行,想必用不了你多長時間即可讀通。

from:  

機櫃系統 資料和業務的幕後英雄

談起機櫃,它可能只是資料中心乙個並不起眼的裝置,也很少受到關注。但是資料中心的伺服器 儲存 交換和安全等裝置都需要安裝在機櫃中,通過機櫃為之提供電 冷卻等基礎服務 也是資料機房的重要組成部分。事實上,不同的裝置對機櫃的規格 標準 供電能力和電氣相容性都有著很嚴格的要求,這個看似不起眼的機櫃,在資料中...

藍鯨智雲的幕後英雄 管控平台

關注嘉為科技,獲取運維新知 本文目錄 1 藍鯨簡介 2 it基礎架構運維的重點 伺服器運維 3 藍鯨管控平台 實力非凡的幕後英雄 4 藍鯨管控平台的整體架構 5 藍鯨管控平台支援proxy模式 6 藍鯨管控平台的功能特性 7 藍鯨管控平台的使用場景 8 藍鯨管控平台的整體特性 平台提供了完善的前後臺...

最後的頒獎典禮 漢芯的幕後英雄集體亮相

最有冒險精神獎 mr.chen 沒錯,除了mr.chen,誰還能這麼大膽的將打磨這一樸實無華的技術發揚到最頂尖的科技領域,他的冒險精神比十六世紀的航海家們更值得尊敬。最有冒險精神獎非mr.chen莫屬。最具眼光獎 漢芯一號專家鑑定團 漢芯的成功離不開鑑定專家的努力,正是他們的 慧眼 看到了漢芯的傑出...