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

zhonghua

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

概述

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



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


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


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


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


在場景的背后,動畫被一個全局定時器收集,這個定時器發(fā)送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秒種內(nèi)從屏幕的左上角移動到(250,250)處。

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


  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秒中內(nèi)弄到(250,250)處,然后在2秒種內(nèi)又弄回原位。移位是在這些點中間以線性插值進行的。


你 也有可能動畫一個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屬性。我們現(xiàn)在可以動畫這個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.     ...  

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

注意:QObject必須是繼承中的第一個,因為元數(shù)據(jù)對象系統(tǒng)需要這樣做。

寬松曲線

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


  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枚舉。如果你需要不一樣的曲線,你也可以自己實現(xiàn)一個,然后注冊到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>
            亚洲免费久久| 亚洲人体影院| 久久精品国产精品亚洲| 亚洲与欧洲av电影| 欧美日韩中文字幕在线| 一本一道久久综合狠狠老精东影业 | 久久成人免费| 亚洲高清视频在线| 亚洲国产精品视频| 欧美日韩成人网| 亚洲视频电影图片偷拍一区| 亚洲一级片在线观看| 国产精品五月天| 老色鬼久久亚洲一区二区| 男人的天堂亚洲| 亚洲深夜福利| 羞羞答答国产精品www一本 | 欧美日本成人| 亚洲免费影视第一页| 欧美伊人久久久久久久久影院 | 欧美视频在线观看视频极品 | 最新亚洲一区| 亚洲视频axxx| 影音先锋日韩资源| 日韩写真在线| 国产专区欧美精品| 亚洲欧洲一级| 国内精品久久久| 亚洲美女网站| 在线播放亚洲| 国产精品99久久久久久www| 国内外成人在线视频| 亚洲精品美女91| 国产亚洲精品一区二555| 亚洲高清毛片| 狠狠爱成人网| 亚洲一区二区免费看| 亚洲人成7777| 久久久www成人免费无遮挡大片 | 国产欧美日韩精品a在线观看| 免费一区二区三区| 国产日产欧美一区| 99国产精品久久久久久久| 在线国产日韩| 午夜视频精品| 亚洲免费在线播放| 欧美激情在线狂野欧美精品| 久久综合伊人77777麻豆| 国产精品久久久久久久久免费樱桃| 欧美aⅴ一区二区三区视频| 国产精品系列在线| 一区二区毛片| 一区二区三区日韩精品视频| 99re66热这里只有精品3直播| 亚洲国产精品第一区二区三区| 国产精品久久久久免费a∨| 亚洲第一在线综合在线| 一区在线免费观看| 亚洲欧美日韩网| 亚洲欧美在线观看| 欧美性大战久久久久久久| 亚洲国产另类久久久精品极度| 在线观看91精品国产麻豆| 亚洲免费一在线| 欧美亚洲在线视频| 国产精品久久| 亚洲最黄网站| 午夜精品久久久久久久久久久久久| 欧美日韩美女一区二区| 亚洲精品一区在线观看香蕉| 亚洲精品自在久久| 欧美黄色日本| 国内精品久久久久久久影视蜜臀| 亚洲视频图片小说| 亚洲欧美一区二区在线观看| 国产精品女人网站| 亚洲欧美日韩精品久久久久| 欧美一区二区视频97| 国产精品亚洲综合久久| 亚洲小少妇裸体bbw| 久久av在线| 狠狠综合久久| 免费观看成人www动漫视频| 欧美激情va永久在线播放| 亚洲片区在线| 国产精品国产精品国产专区不蜜| 亚洲在线视频网站| 久久嫩草精品久久久精品| 在线不卡视频| 欧美日韩成人在线| 亚洲综合日本| 免费日韩av电影| 夜夜嗨av色一区二区不卡| 国产精品一区二区在线观看不卡 | 久久全球大尺度高清视频| 亚洲国产成人久久综合| 欧美日本一区| 性欧美1819性猛交| 亚洲第一黄色网| 亚洲在线日韩| 亚洲电影一级黄| 欧美日韩三级电影在线| 香蕉免费一区二区三区在线观看| 久久综合给合久久狠狠色| 99精品国产在热久久下载| 国产乱码精品一区二区三区五月婷 | 亚洲一区亚洲| 欧美xart系列高清| 亚洲资源av| 亚洲国产成人久久综合一区| 国产精品大片| 美女成人午夜| 午夜视频一区| 99精品视频免费观看视频| 久久久久久国产精品一区| 99亚洲一区二区| 精品91在线| 国产精品普通话对白| 欧美韩日一区| 久久久久久黄| 香蕉亚洲视频| 一区二区三区波多野结衣在线观看| 免费成人高清在线视频| 亚洲欧美日韩国产综合在线| 亚洲乱码一区二区| 一区视频在线| 国产亚洲一区二区在线观看| 欧美日韩直播| 欧美日本国产视频| 欧美成人免费播放| 久久一本综合频道| 欧美专区一区二区三区| 一区二区三区欧美| 日韩视频免费| 亚洲精品少妇30p| 欧美激情一区二区三区蜜桃视频| 久久精品视频在线观看| 亚洲欧美中文日韩在线| 中文国产成人精品| 一区二区三区四区精品| 亚洲靠逼com| 亚洲黄色在线视频| 91久久精品美女高潮| 亚洲福利视频二区| 亚洲激情黄色| 亚洲黄色在线视频| 最新中文字幕一区二区三区| 亚洲黄一区二区三区| 亚洲国产精品va| 亚洲国产另类久久久精品极度| 激情久久婷婷| 激情五月婷婷综合| 伊人狠狠色j香婷婷综合| 精品动漫3d一区二区三区免费| 激情文学一区| 亚洲国产精品va在看黑人| 91久久精品国产91性色tv| 亚洲精品久久久蜜桃| 99视频一区二区三区| 亚洲一区日本| 欧美一站二站| 久久综合九色| 亚洲国内精品在线| 亚洲色图综合久久| 香蕉久久夜色精品国产使用方法| 欧美一站二站| 欧美高清在线一区| 国产精品久久久久天堂| 国产麻豆日韩欧美久久| 一区二区三区在线看| 亚洲剧情一区二区| 午夜激情综合网| 免费看亚洲片| 正在播放亚洲| 久久久久久久久综合| 欧美精品国产精品| 国产欧美日韩在线播放| 亚洲国产岛国毛片在线| 亚洲一区二区三区久久| 久久一区国产| 亚洲最新中文字幕| 久久偷窥视频| 国产精品www网站| 亚洲大黄网站| 亚洲男同1069视频| 亚洲大胆女人| 亚洲欧美久久久| 欧美国产日韩精品| 国产一区二区毛片| 亚洲美女av电影| 久久天堂av综合合色| 妖精成人www高清在线观看| 久久激情五月激情| 欧美天天影院| 亚洲青色在线| 免费久久99精品国产自在现线| 一区二区三区免费看| 欧美国产日韩一区二区在线观看| 国产亚洲精品激情久久| 一区二区三区毛片|