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

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>
            久久偷看各类wc女厕嘘嘘偷窃| 欧美国产日本高清在线| 久久久久久久综合色一本| 亚洲国产视频一区二区| 久久久久久久综合| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲国产精品福利| 亚洲精品影院| 国产精品美女主播在线观看纯欲| 亚洲一区二区三区精品在线观看| 欧美成人免费全部观看天天性色| 亚洲免费观看高清在线观看| 久久蜜桃精品| 午夜日韩在线观看| 亚洲一级二级| 日韩视频在线观看免费| 欧美激情一区二区在线 | 激情自拍一区| 国产日韩精品视频一区二区三区| 欧美精品播放| 欧美裸体一区二区三区| 久久亚洲精品网站| 久久一区二区精品| 米奇777在线欧美播放| 久久成人久久爱| 久久久综合激的五月天| 欧美肥婆在线| 久久久久久久波多野高潮日日| 欧美在线精品一区| 免费不卡亚洲欧美| 欧美日韩一区二区三区四区五区| 欧美精品成人一区二区在线观看| 欧美日本在线播放| 亚洲线精品一区二区三区八戒| 亚洲日本理论电影| 国产精品99久久久久久久vr | 日韩网站在线观看| 宅男精品视频| 久久精品视频在线免费观看| 久久综合图片| 欧美午夜一区| 亚洲卡通欧美制服中文| 一本色道综合亚洲| 久久一本综合频道| av成人毛片| 欧美顶级大胆免费视频| 国产精品一区三区| 正在播放亚洲一区| 亚洲一区二区三区视频播放| 久久五月激情| 亚洲欧美日韩高清| 欧美日韩国产黄| 亚洲激情六月丁香| 久久久一区二区三区| 亚洲欧美日韩人成在线播放| 欧美成人一品| 亚洲黄色一区二区三区| 亚洲一级影院| 欧美精品久久一区二区| 亚洲第一天堂av| 久久视频在线看| 久久在线视频| 影音欧美亚洲| 麻豆精品一区二区av白丝在线| 香蕉成人伊视频在线观看| 国产精品免费看| 国产精品免费看片| 亚洲欧美日韩一区二区| 一区二区三区精品在线| 欧美午夜精品| 久久精品在线观看| 牛牛影视久久网| 国产一区二区三区在线观看网站| 久久国产精品久久w女人spa| 亚洲日本激情| 亚洲国产福利在线| 欧美精品国产一区| 一区二区三区高清视频在线观看| 亚洲少妇中出一区| 激情久久婷婷| 亚洲视频免费在线| 亚洲人体影院| 久久久伊人欧美| 欧美在线一二三区| 美玉足脚交一区二区三区图片| 亚洲欧美国产一区二区三区| 亚洲主播在线播放| 一区二区欧美在线观看| 久久国产欧美| 欧美在线视频一区二区三区| 欧美黄色aaaa| 亚洲欧美日韩精品久久亚洲区| 欧美制服丝袜| 久久精品成人欧美大片古装| 国产精品美女主播在线观看纯欲| 最近看过的日韩成人| 亚洲电影有码| 欧美寡妇偷汉性猛交| 亚洲国产成人av好男人在线观看| 亚洲第一中文字幕在线观看| 久久国产99| 老司机午夜精品视频在线观看| 欧美激情中文字幕一区二区 | 亚洲激情在线观看| 99精品热视频| 欧美小视频在线| 亚洲无玛一区| 久久久蜜桃一区二区人| 亚洲国产精品久久久久秋霞不卡 | 在线播放日韩| 欧美成ee人免费视频| 亚洲激情在线视频| 亚洲小视频在线| 1204国产成人精品视频| 国产伦精品一区二区三区视频孕妇| 久久精品国产99国产精品澳门 | 亚洲天堂免费观看| 国产自产精品| 黄色精品在线看| 国内精品视频在线播放| 国产午夜久久久久| 国产在线欧美日韩| 精品91视频| 亚洲激情啪啪| 日韩亚洲精品电影| 日韩视频一区二区在线观看 | 久久九九免费| 久久精品国产视频| 久久综合九色综合久99| 欧美国内亚洲| 亚洲精品中文字幕有码专区| 亚洲精一区二区三区| 亚洲欧美成人网| 亚洲欧美日韩精品久久奇米色影视| 99精品99| 久久精品日韩一区二区三区| 美女视频一区免费观看| 亚洲承认在线| 亚洲欧美视频| 欧美成人在线免费视频| 欧美日韩一区二区三区视频| 国产日韩精品在线| 亚洲精品国产精品乱码不99按摩| 99热这里只有精品8| 性做久久久久久免费观看欧美| 久久久久久久精| 亚洲少妇自拍| 欧美啪啪成人vr| 国产日韩欧美视频| 正在播放亚洲一区| 亚洲第一中文字幕在线观看| 在线综合亚洲欧美在线视频| 欧美成人亚洲成人| 韩国精品在线观看| 午夜精品婷婷| 亚洲图片欧美一区| 欧美日韩影院| 亚洲一区二区精品在线观看| 亚洲电影毛片| 欧美人体xx| 亚洲视频一二三| 在线视频精品| 国产精品入口日韩视频大尺度| av成人免费在线观看| 日韩亚洲不卡在线| 国产精品美女久久久久aⅴ国产馆| 亚洲美女视频在线免费观看| 91久久久久久久久久久久久| 久热成人在线视频| 亚洲人成人一区二区在线观看 | 国产在线拍偷自揄拍精品| 性欧美办公室18xxxxhd| 欧美在线电影| 亚洲三级免费| 亚洲影院免费| 欧美日韩免费高清| 狠狠操狠狠色综合网| 亚洲人永久免费| 欧美色综合天天久久综合精品| 亚洲一区二区毛片| 久久一区激情| 亚洲欧美视频在线观看视频| 欧美亚洲尤物久久| 一区二区三区 在线观看视频| 亚洲伊人伊色伊影伊综合网| 国产在线精品二区| 午夜精品久久久久久久99水蜜桃| 亚洲狠狠婷婷| 欧美一区高清| 亚洲伊人色欲综合网| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美黄色一级视频| 免费精品99久久国产综合精品| 欧美色图一区二区三区| 亚洲国产婷婷香蕉久久久久久| 国产亚洲成av人片在线观看桃| 亚洲天堂偷拍| 欧美亚洲日本网站| 国产麻豆一精品一av一免费| 中文欧美字幕免费|