青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

zhonghua

C++博客 首頁 新隨筆 聯系 聚合 管理
  72 Posts :: 1 Stories :: 4 Comments :: 0 Trackbacks

概述

Qt動畫架構中的主要類如下圖所示:



動畫框架由基類QAbstractAnimation和它的兩個兒子QVariantAnimationQAnimationGroup組成。QAbstractAnimation是所有動畫類的祖宗。它包含了所有動畫的基本屬性。比如開始,停止和暫停一個動畫的能力。它也可以接收時間改變通知。


動畫框架又進一步提供了QProertyAnimation類。它繼承自QVariantAnimation并對某個Qt屬性(它須是Qt的”元數據對象系統”的一部分,見http://blog.csdn.net/nkmnkm/article/details/8225089)執行動畫。此類對屬性執行一個寬松曲線插值。所以當你想去動畫一個值時,你可以把它聲明為一個屬性,并且讓你的類成為一個QObject。這給予我們極大的自由度來動畫那些已存在的widget和其它QObject


復雜的動畫可以通過建立一個QAbstractAnimation的樹來構建。這個樹通過使用QAnimationGroups來創建,QAnimationGroups作為其它動畫的容器。注意動畫組也是從QAbstractAnimation派生的,所以動畫組可以再包含其它動畫組。


動畫框架可以單獨使用,同時也被設計為狀態機框架的一部分。狀態機提供了一個特定的狀態可以用來播放動畫。在進入或退出某個狀態時QState也可以設置屬性們,并且這個特定的動畫狀態將在指定QPropertyAnimation時給予的值之間做插值運算。后面我們要進一步介紹此問題。


在場景的背后,動畫被一個全局定時器收集,這個定時器發送update到所有的正在播放的動畫中。

動畫框架中的類們

QAbstractAnimation

所有動畫類的基類

QAnimationGroup

動畫組的基類

QEasingCurve

控制動畫的寬松曲線類

QParallelAnimationGroup

并行動畫組類

QPauseAnimation

串行動畫組類的暫停類

QPropertyAnimation

動畫Qt屬性的類

QSequentialAnimationGroup

串行動畫組類

QTimeLine

控制動畫的時間線類

QVariantAnimation

各動畫類的虛基類


動畫Qt屬性們

如前面所講,QPropertyAnimation類可以修改Qt屬性們。要動畫一個值,就需要使用此類。實際上,它的父類,QVariantAnimation,是一個虛擬類,不能被直接使用。


我們選擇動畫Qt屬性的一個主要理由是Qt屬性為我們提供了自己動畫已存在的類的自由度。尤其是QWidget類(我們也可以把它嵌入到一個QGraphicsView中)具有很多屬性表示其bounds,colors等等。讓我們看一個小例子:

  1. QPushButton button("Animated Button");  
  2. button.show();  
  3. QPropertyAnimation animation(&button, "geometry");  
  4. animation.setDuration(10000);  
  5. animation.setStartValue(QRect(0, 0, 100, 30));  
  6. animation.setEndValue(QRect(250, 250, 100, 30));  
  7. animation.start();  

這段代碼將把按鈕在10秒種內從屏幕的左上角移動到(250,250)處。

上面的例子舉在開始值和結束值之間做線性插值。還可以在開始和結束值之間設置值,插值運算就會經過這些點。


  1. QPushButton button("Animated Button");  
  2. button.show();  
  3. QPropertyAnimation animation(&button, "geometry");  
  4. animation.setDuration(10000);  
  5. animation.setKeyValueAt(0, QRect(0, 0, 100, 30));  
  6. animation.setKeyValueAt(0.8, QRect(250, 250, 100, 30));  
  7. animation.setKeyValueAt(1, QRect(0, 0, 100, 30));  
  8. animation.start();  

在此例中,動畫將按鈕在8秒中內弄到(250,250)處,然后在2秒種內又弄回原位。移位是在這些點中間以線性插值進行的。


你 也有可能動畫一個QObject的值,雖然這些值并沒有被聲明為Qt屬性。唯一的要求就是這個值具有一個setter。之后你可以從這個類派生子類從而包 含這些值并且聲明一個使用這個setter的屬性。注意每個Qt屬性都需要有一個getter,所以你需要提供一個getter,如果它不存在的話。

  1. class MyGraphicsRectItem : public QObject, public QGraphicsRectItem  
  2. {  
  3.     Q_OBJECT  
  4.     Q_PROPERTY(QRectF geometry READ geometry WRITE setGeometry)  
  5. };  

在上例中,我們派生了QGraphicsRectItem并定義了一個geometry屬性。我們現在可以動畫這個widget的geometry了,即使QGraphicsRectItem沒有提供geometry屬性。

動畫和圖形視圖框架

當你想動畫QGraphicsItems,你也要用QPropertyAnimation。然而,QGraphicsItem不是從QObject派生的。一個好的解決方案是派生要動畫的圖形item。派生類也要從QObject派生。這樣,QPropertyAnimation就可以被用于QGraphicsItems了。

  1. class Pixmap : public QObject, public QGraphicsPixmapItem  
  2. {  
  3.     Q_OBJECT  
  4.     Q_PROPERTY(QPointF pos READ pos WRITE setPos)  
  5.     ...  

就如上一節中所講的,我們需要定義希望去動畫的屬性。

注意:QObject必須是繼承中的第一個,因為元數據對象系統需要這樣做。

寬松曲線

QPropertyAnimation在屬性的開始值和結束值之間執行一個插值運算。除了向動畫添加更多的關鍵值外,你還可以使用一個寬松曲線。寬松曲線描述了一個在01之間插值的速度變化的函數,如果你想控制一個動畫的速度而不改變插值的路徑時,就非常有用。


  1. QPushButton button("Animated Button");  
  2. button.show();  
  3. QPropertyAnimation animation(&button, "geometry");  
  4. animation.setDuration(3000);  
  5. animation.setStartValue(QRect(0, 0, 100, 30));  
  6. animation.setEndValue(QRect(250, 250, 100, 30));  
  7. animation.setEasingCurve(QEasingCurve::OutBounce);  
  8. animation.start();  

這里,動畫將按照一個曲線進行,這個曲線使得動畫像一個跳動的皮球從開始位置跳到結束位置。QEasingCurve具有一個大曲線集合,你可以從里面選擇一個。它們被定義為QEasingCurve::Type枚舉。如果你需要不一樣的曲線,你也可以自己實現一個,然后注冊到QEasingCurve

posted on 2013-06-05 16:39 米米 閱讀(858) 評論(0)  編輯 收藏 引用 所屬分類: qt
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲理论在线| 韩国三级电影久久久久久| 欧美性开放视频| 中文网丁香综合网| 久久久久女教师免费一区| 欧美国产日产韩国视频| 在线观看91久久久久久| 久久久久久久网站| 一区二区三区四区五区视频| 久久久久久9999| 1024亚洲| 亚洲精品美女91| 久久精品三级| 99热免费精品| 欧美激情aaaa| 免播放器亚洲| 午夜日本精品| 久久国产精品亚洲77777| 国产一区二区三区的电影| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲视屏在线播放| 亚洲国产精品久久久久久女王 | 国产精品久久久久久久久久直播| 久久精品国产亚洲高清剧情介绍| 久久成人在线| 日韩视频精品在线| 久久综合色天天久久综合图片| 亚洲国产精品一区二区久| 欧美激情亚洲自拍| 亚洲黄色性网站| 日韩午夜剧场| 国产午夜精品一区二区三区视频| 欧美在线91| 欧美高清hd18日本| 欧美一区二区成人| 国产日产欧产精品推荐色| 久久久999国产| 亚洲电影免费在线观看| 欧美剧在线免费观看网站| 欧美中文字幕在线观看| 久久福利精品| 亚洲一区激情| 国产精品午夜在线观看| 久久精品综合| 久久久天天操| 国产亚洲一区二区在线观看 | 欧美性开放视频| 91久久综合| 久久国产福利| 亚洲黄网站黄| 亚洲欧洲精品一区二区三区| 欧美精品一区二区三区在线播放| 久久久欧美一区二区| 久久精品人人爽| 亚洲欧美日韩人成在线播放| 欧美福利在线| 亚洲另类自拍| 亚洲一区久久久| 国产精品久久久久久影院8一贰佰| 亚洲黄色成人| 国产日韩欧美在线看| 久久中文精品| 亚洲欧洲一区二区天堂久久| 欧美日韩高清免费| 午夜老司机精品| 麻豆精品在线视频| 亚洲综合社区| 亚洲美女诱惑| 一区二区在线观看av| 欧美成人午夜77777| 一区二区三区久久网| 久久综合一区二区| 久久久久久久尹人综合网亚洲| 久久综合免费视频影院| 久久午夜影视| 亚洲一区二区三区免费在线观看| 国产一区二区三区av电影| 亚洲综合视频一区| 久久久999精品免费| 亚洲三级色网| 欧美日韩喷水| 欧美三级电影网| 牛人盗摄一区二区三区视频| 国产在线精品成人一区二区三区| 欧美高清免费| 国产真实久久| 六月天综合网| 久久精品色图| 久久久久久网站| 久久综合久久久| 亚洲欧美一区二区激情| 亚洲专区在线视频| 亚洲欧美日韩在线不卡| 亚洲毛片在线看| 亚洲视频一区二区免费在线观看| 亚洲午夜女主播在线直播| 最新高清无码专区| 欧美中文字幕在线视频| 亚洲一区二区三区高清不卡| 亚洲九九爱视频| 久久黄色级2电影| 欧美激情a∨在线视频播放| 久久久久久久久久码影片| 蜜臀av一级做a爰片久久 | 国际精品欧美精品| 亚洲免费av片| 亚洲精品视频在线| 夜夜嗨一区二区| 欧美一级大片在线观看| 小黄鸭视频精品导航| 亚洲乱码国产乱码精品精98午夜| 久久精品国产一区二区三| 亚洲欧洲日韩在线| 亚洲一区二区毛片| 亚洲日本理论电影| 欧美日韩国产精品一区| 亚洲第一搞黄网站| 亚洲第一在线视频| 老色批av在线精品| 欧美久久综合| 免费亚洲一区二区| 欧美乱人伦中文字幕在线| 亚洲三级毛片| 亚洲综合999| 永久555www成人免费| 久久福利一区| 久久蜜桃资源一区二区老牛| 亚洲国产精品一区在线观看不卡| 91久久夜色精品国产网站| 国产欧美日韩中文字幕在线| 一本大道久久a久久精二百| 欧美日韩国语| 久久综合中文色婷婷| 欧美日韩一区二区三区在线视频| 久久久999精品免费| 国产喷白浆一区二区三区| 亚洲视频碰碰| 国产精品素人视频| 亚洲精选中文字幕| 在线观看国产成人av片| 亚洲一区欧美激情| 亚洲综合电影一区二区三区| 欧美激情小视频| 亚洲激情中文1区| 一区二区日本视频| 欧美日韩久久精品| 免费h精品视频在线播放| 精品成人一区二区| 午夜精品久久久久久久久久久久| 一本久久综合亚洲鲁鲁| 女仆av观看一区| 亚洲高清精品中出| 91久久夜色精品国产九色| 亚洲天堂av图片| 国产午夜精品理论片a级探花 | 亚洲一区国产视频| 久久精品中文字幕免费mv| 欧美视频一区二区三区在线观看| 亚洲精品影视| 欧美一级成年大片在线观看| 一区二区在线视频| 国产精品久久一区二区三区| 久久九九99| 99精品国产99久久久久久福利| 久久精品国产久精国产思思| 日韩视频不卡中文| 亚洲国产网站| 国产精品国产三级国产a| 久久九九国产| 亚洲免费在线| 亚洲精品1234| 一区二区三区国产精品| 久久久亚洲精品一区二区三区 | 久久精品国产亚洲高清剧情介绍| 快播亚洲色图| 久久久久久久一区二区三区| 中文亚洲免费| 亚洲精品视频在线观看网站| 国产精品久久久久久久久久三级| 欧美在线视频日韩| 香蕉免费一区二区三区在线观看 | 欧美淫片网站| 亚洲夜间福利| 午夜精彩视频在线观看不卡 | 欧美成人免费va影院高清| 欧美激情精品久久久久久大尺度| 香蕉国产精品偷在线观看不卡| 国产中文一区二区三区| 国产有码在线一区二区视频| 亚洲欧美电影在线观看| 先锋影音一区二区三区| 亚洲午夜在线观看| 在线一区二区三区四区| 亚洲免费影视| 免费成人av在线看| 国产精品草莓在线免费观看| 国产精品国产三级国产aⅴ浪潮 | 亚洲激情午夜| 亚洲激情啪啪| 午夜亚洲福利|