深入淺出理解QTimeLine類

??? 網上找了下QTimeLIne類的介紹,要么就是代碼一貼自己看去,要么就是說不到重點,正巧自己項目遇到這個類,在這里寫一下,給需要的同學看下。

??? 因為我最近需要有動畫方面配合時間間隔觸發QGraphicsView框架的需求,意外找到了一個Qt中很實用的時間類QTImeLine,現在讓我們一起來學習一下它。

??? QTimeLine擁有一個時間軸來控制時間動畫和事件,其中在構造函數傳入的時候你需要指定一個毫秒級的參數來指定他的總運行時間比如new QTImeLine(1000),表示它運行的總時間為1秒。

??? 第二步你要做的就是對QTImeLine的時間軸設置動畫幀數,相信了解動畫的人對幀數應該不陌生,不了解的人你可以跟我一樣把它想象成一個動畫表示的時 候有多少張靜態畫面組成,所以對QTimeLine::setFrameRange(0, 100)。表明該動畫一共有100張靜態畫面來組成,同時請注意,構造函數傳入的時候有一個時間參數,同學們千萬別以為frame和time有著必然的聯 系,其實時間再長或者時間再短,我的整個100幀都可以走完,只是走完時,會受時間影響的控制來影響我的幀數步長。比如你的時間設置為0ms,但幀數是 100,所以點了start之后一下子就到了100幀(Qt中默認規定40ms一幀,也就是一秒可以最多走25幀,但是如果你設置的是0ms,Qt會默認 按照40ms一幀的速度來走),同樣如果你設置了80ms,按照Qt的習慣,其實就是給你兩次走幀機會,聰明的同學應該猜到了,就是50幀和100幀。

??? 第三步,你可以設置你的時間變換曲線,即setCurveShape函數來規定明確你的時間是先快后慢,還是先慢后快,或者線性,或者正余弦,比較常用的就是LinearCurve線性變換。

??? 第四步,其實到這邊已經差不多了,在用connect連接好它的frameChanged(int)函數的時候,你設置好自己的響應時間槽,就可以觸發start來完成自己的動畫效果了。

??? PS:有的同學會問到setUpdateInterval函數是用來干嘛的,其實你可以簡單的理解為,時間軸的走的時候,會不斷的發出frameChanged信號,這個update就是給它把關多少時間發一次的,其實兩者并不沖突。

??? 合理利用QTimeLIne類來控制自己的QGraphicsItem動畫,enjoy!

轉載于:https://www.cnblogs.com/rickyk/p/4044875.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/375542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/375542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/375542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

0909編譯原理

1.編譯原理學什么? 編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 2.為什么學編譯原理? 這門…

何為動態綁定(轉)

動態綁定只是叫法不同,你可以理解為多態!例如,有一個抽像fruit水果父類,其中定義了一個方法抽像eat方法,而apple繼承fruit并實現fruit的eat方法,而banana繼承fruit并實現fruit的eat方法,外部調用…

繼承與多態

第十七講 A)構造方法的重載:只需看參數即可。如果想在一個構造方法中調用另外一個構造方法,那么可以用this()的方式調用,this()括號中的參數表示目標構造方法的參數。this()必須要作為構造方法的第一條語句。 B)繼承&a…

c++學習心得

c是大一開始接觸的一門新的語言,說老實話當時學的并不好興趣指數5顆星中只有3顆。但是既然是學這方面的,還是好好聽課學習吧。下面簡單的說一下c的一些學習心得吧! c是什么?c是一種面向對象的程序設計語言。c是c的一種提高&#x…

實現strstr()

實現 strStr() 函數。 給定一個 haystack 字符串和一個 needle 字符串,在 haystack 字符串中找出 needle 字符串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。 示例 1: 輸入: haystack "hello", needle "ll" 輸出: 2示例…

有效電話號碼

給定一個包含電話號碼列表(一行一個電話號碼)的文本文件 file.txt,寫一個 bash 腳本輸出所有有效的電話號碼。 你可以假設一個有效的電話號碼必須滿足以下兩種格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一個數字…

JSP中RequestDispatcher的用法

RequestDispatcher是一個Web資源的包裝器&#xff0c;可以用來把當前request傳遞到該資源&#xff0c;或者把新的資源包括到當前響應中。RequestDispatcher接口中定義了兩個方法&#xff1a;include/forward 由于<jsp:include>只能指定固定的jsp文件名&#xff0c;不能動…

TCP/IP三次握手與四次握手

原文地址 http://blog.csdn.net/whuslei/article/details/6667471 http://blog.csdn.net/wo2niliye/article/details/48447933 建立TCP需要三次握手才能建立&#xff0c;而斷開連接則需要四次握手。整個過程如下圖所示&#xff1a; 先來看看如何建立連接的。 首先Client端發送連…

vim支持nginx語法高亮

下載nginx源碼&#xff0c;解壓之后&#xff0c;將contribu/vim/*拷貝到~/.vim/目錄&#xff0c;如果沒有~/.vim/目錄&#xff0c;則創建即可。 cp -r contrib/vim/* ~/.vim/或 mkdir -p ~/.vim/ cp -r contrib/vim/* ~/.vim/此時再打開conf/nginx.conf就可以看到已經語法高亮…

Delphi 正則表達式語法(4): 常用轉義字符與 .

Delphi 正則表達式語法(4): 常用轉義字符與 . // \d 匹配所有數字, 相當于 [0-9] varreg: TPerlRegEx; beginreg : TPerlRegEx.Create(nil);reg.Subject : 期待Delphi 2008 for Win32&#xff01;;reg.RegEx : \d;reg.Replacement : ◆;reg.ReplaceAll;ShowMessage(reg.Subje…

C語言操作mysql

php中 mysqli, pdo 可以用 mysqlnd 或 libmysqlclient 實現 前者 從 php 5.3.0起已內置到php中, 并且支持更多的特性&#xff0c;推薦用 mysqlnd mysqlnd &#xff0c; libmysqlclient 對比&#xff1a;http://php.net/manual/en/mysqlinfo.library.choosing.php mysqlnd 目前是…

Hadoop DistributedCache分布式緩存的使用

轉載請注明&#xff1a;http://www.cnblogs.com/demievil/p/4059141.html 我的github博客&#xff1a;http://demievil.github.io/ 做項目的時候遇到一個問題&#xff0c;在Mapper和Reducer方法中處理目標數據時&#xff0c;先要去檢索和匹配一個已存在的標簽庫&#xff0c;再對…

每日溫度

根據每日 氣溫 列表&#xff0c;請重新生成一個列表&#xff0c;對應位置的輸出是需要再等待多久溫度才會升高超過該日的天數。如果之后都不會升高&#xff0c;請在該位置用 0 來代替。 例如&#xff0c;給定一個列表 temperatures [73, 74, 75, 71, 69, 72, 76, 73]&#xf…

什么是Modbus

什么是Modbus 1. Modbus如何工作 Modbus是通過設備之間的幾根連線來傳遞數據&#xff0c;最簡單的設置就是主站和從站之間用一跟串口線相連。數據通過一串0或者1來傳遞&#xff0c;也就是位。0為正電壓&#xff0c;1為負電壓。位數據傳遞速度非常快&#xff0c;常見的傳輸速度為…

博客剛剛開通!

今天老賊開播了&#xff01;以后請大家多多關照&#xff01; 轉載于:https://www.cnblogs.com/xiaosayi/p/4065313.html

Android實例-拍攝和分享照片、分享文本(XE8+小米2)

結果&#xff1a; 1.分享文本不好使&#xff0c;原因不明。有大神了解的&#xff0c;請M我&#xff0c;在此十分感謝。 2.如果想支持圖片編輯&#xff0c;將Action事件的Editable改為True。 相關資料&#xff1a; 官網地址&#xff1a;http://docwiki.embarcadero.com/RADStudi…

go語言 expected ; found a

錯誤代碼&#xff0c;這是一段測試go語言類型轉換的代碼 package type_testimport "testing"type MyInt int64func TestImplicit(t *testing.T) {var a int32 1var b int64 3b (int64)avar c MyInt 4// c bt.Log(a, b, c) }報錯代碼 b (int64)a改正 b int6…

win8 metro 調用攝像頭拍攝照片并將照片保存在對應的位置

剛剛做過這類開發&#xff0c;所以就先獻丑了&#xff0c;當然所貼上的源代碼都是經過驗證過的&#xff0c;已經執行成功了&#xff0c;希望能夠給大家一些借鑒&#xff1a; 以下是metro UI代碼&#xff1a; <Pagex:Class"Camera.MainPage"xmlns"http://sche…

poj 3678 Katu Puzzle(2-sat)

Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a boolean operator op (one of AND, OR, XOR) and an integer c (0 ≤ c ≤ 1). One Katu is solvable if one can find each vertex Vi a value Xi (0 ≤ Xi ≤ 1) suc…

go 語言 first argument to append must be slice

錯誤代碼 func TestSliceGrowing(t *testing.T) {s : [4]int{1, 2, 3, 4}for i :0; i<10; i {s append(s, i)t.Log(len(s), cap(s))} }報錯代碼 s append(s, i)原因&#xff1a;append的第一個參數必須是切片 更正 func TestSliceGrowing(t *testing.T) {s : []int{1,…