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

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 米米 閱讀(861) 評論(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>
            亚洲中无吗在线| 国产精品久久久久影院色老大| 亚洲另类自拍| 久久久久久久波多野高潮日日 | 欧美日韩在线一区二区三区| 久久一二三四| 国产精品亚洲欧美| 99精品国产在热久久| 亚洲精品1234| 欧美 亚欧 日韩视频在线| 久久久久久久尹人综合网亚洲 | 欧美专区亚洲专区| 午夜精品久久久久久| 欧美日韩免费观看一区=区三区| 欧美成年人网站| 国内精品99| 久久国产福利| 久久综合精品一区| 国产一区二区丝袜高跟鞋图片| 亚洲影院高清在线| 亚洲已满18点击进入久久| 欧美日韩中国免费专区在线看| 亚洲欧洲另类国产综合| 亚洲国产视频直播| 欧美黄免费看| 亚洲区免费影片| 中日韩美女免费视频网址在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 你懂的视频一区二区| 亚洲国产欧美日韩| 欧美电影美腿模特1979在线看 | 亚洲人成欧美中文字幕| 免费短视频成人日韩| 欧美电影免费观看高清完整版| 亚洲成人在线免费| 欧美刺激性大交免费视频| 亚洲国产成人精品久久久国产成人一区 | 性做久久久久久免费观看欧美| 午夜一区不卡| 国产综合视频在线观看| 久久久久久久一区| 亚洲欧洲精品一区二区精品久久久| 亚洲精品免费观看| 欧美日韩一区二区三区高清| 一区二区高清| 久久久久久久久久久一区 | 久久久久国产精品厨房| 欧美成人免费网站| 一区二区欧美日韩| 国产免费一区二区三区香蕉精| 欧美在线影院| 亚洲国产精品www| 亚洲免费视频网站| 极品中文字幕一区| 欧美精品1区2区3区| 久久久午夜电影| 亚洲精品久久久蜜桃| 国产精品狼人久久影院观看方式| 欧美一级理论性理论a| 亚洲欧美经典视频| 一区二区三区在线观看欧美| 欧美第一黄色网| 午夜在线观看免费一区| 亚洲国产视频一区二区| 欧美一区日韩一区| 亚洲经典自拍| 国产婷婷一区二区| 欧美日韩一区综合| 久久久久一区| 亚洲天堂免费观看| 亚洲国产精品久久久久婷婷老年| 亚洲欧洲av一区二区| 亚洲第一黄网| 国产亚洲女人久久久久毛片| 欧美极品aⅴ影院| 久久久久久久久岛国免费| 夜夜嗨一区二区| 欧美激情导航| 久久精品夜夜夜夜久久| 一区二区三区日韩精品| ●精品国产综合乱码久久久久| 国产精品私房写真福利视频 | 国产精品sm| 欧美成人精品激情在线观看 | 亚洲一二三区在线| 亚洲精品偷拍| 亚洲国产精品免费| 欧美aa在线视频| 久久综合网hezyo| 欧美一区二区观看视频| 亚洲午夜性刺激影院| 99国产精品久久久| 亚洲精品一品区二品区三品区| 国内精品美女在线观看| 国产乱码精品1区2区3区| 欧美日韩亚洲视频| 欧美精品在线观看一区二区| 久久乐国产精品| 久久精品国内一区二区三区| 免费欧美电影| 久久综合一区二区| 久久久蜜桃精品| 久久久久综合网| 久久―日本道色综合久久| 久久国产精品久久久久久久久久| 午夜在线a亚洲v天堂网2018| 亚洲免费视频观看| 亚洲欧美中文日韩在线| 性欧美video另类hd性玩具| 亚洲欧美中文在线视频| 欧美一级免费视频| 久久成人综合视频| 欧美在线资源| 老司机午夜免费精品视频| 久久亚洲综合网| 欧美暴力喷水在线| 亚洲国产精品高清久久久| 亚洲国产精品一区制服丝袜| 亚洲国产精品一区在线观看不卡| 亚洲国产精品一区二区www在线 | 美女在线一区二区| 另类图片综合电影| 欧美国产精品中文字幕| 亚洲国产精品毛片| 日韩午夜av电影| 午夜精品国产| 久久综合亚州| 欧美日韩亚洲精品内裤| 国产日韩精品一区二区三区在线| 国产曰批免费观看久久久| 亚洲电影免费观看高清| 99精品热视频只有精品10| 亚洲欧美国产一区二区三区| 久久久久国产成人精品亚洲午夜| 欧美福利一区二区三区| 日韩午夜免费| 欧美一区综合| 欧美黄色一级视频| 国产嫩草影院久久久久| 亚洲国产第一| 亚洲欧美日韩国产中文在线| 久久亚洲电影| 日韩视频国产视频| 欧美一区二区三区四区在线观看| 噜噜噜噜噜久久久久久91| 国产精品高清免费在线观看| 欧美14一18处毛片| 国产精品日韩一区二区| 伊人久久大香线蕉av超碰演员| 99re热这里只有精品视频| 久久成人在线| 亚洲日本va午夜在线电影| 午夜精彩国产免费不卡不顿大片| 久久亚洲精品视频| 国产精品免费视频观看| 亚洲伦理中文字幕| 久久人人97超碰人人澡爱香蕉| 亚洲精品久久视频| 欧美在线播放视频| 国产精品mm| 亚洲精选久久| 麻豆成人91精品二区三区| 国产精品99久久99久久久二8| 免费h精品视频在线播放| 国产欧美日韩激情| 亚洲一二三区在线| 亚洲娇小video精品| 久久久久久综合| 国产午夜久久| 亚洲男女自偷自拍| 亚洲七七久久综合桃花剧情介绍| 久久久久久综合| 国产一区二区精品丝袜| 午夜精品免费| 一区二区三区波多野结衣在线观看| 免费美女久久99| 樱花yy私人影院亚洲| 久久久欧美一区二区| 亚洲一区二区精品在线| 欧美日韩在线视频一区| av成人免费观看| 亚洲电影av在线| 毛片av中文字幕一区二区| 韩国女主播一区| 久久久久久久网| 久久丁香综合五月国产三级网站| 国产精品午夜在线| 午夜精品福利视频| 亚洲午夜视频| 国产精品人人做人人爽| 香港久久久电影| 亚洲欧美日韩爽爽影院| 国产日韩亚洲欧美综合| 久久国产免费看| 欧美在线3区| 激情五月***国产精品| 免费视频亚洲| 欧美成人官网二区| 99精品久久| 一区二区三区四区蜜桃|