• <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>

            zhonghua

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

            概念

            名稱 含義
            View 視圖 視覺化一個場景
            Scene 場景 用于管理圖形項
            Item 圖形項 具體的圖形對象

             

            QT的圖形視圖架構采用Model-View模型,Scence里面包含多個Item,可以用多個View以不同的方式觀察一個Scence

            功能
            Scene(QGraphicsScene)

            • 添加,刪除,查詢圖項

            • 事件分發

            • 管理圖項的選擇狀態和焦點

            View (QGraphicsView)

            • 為Scene提供一個視圖接口
            • 接收鼠標鍵盤事件,轉換后發給Scene
            • 負責View和Scence之間的坐標變換 

            可以為View設置不同的ViewPort控件,比如QGLWidget來支持OpenGL,Read More!

            Item (QGraphicsItem)

             

            圖形項的基類是QGraphicItem

            基礎的Feature包括:

            • 處理鼠標鍵盤事件
            • 拖放
            • 分組
            • 碰撞檢測

            每個圖形項都有自己的本例坐標系統,并提供它和場景坐標的轉換函數。所以可以單獨旋轉或縮放某個一圖形項


            除了pos等很少的幾個函數,圖形項的多數函數所處理的坐標都是它的本地坐標(例如bounding rect)

            坐標系統

            如上所述視圖體系采用三種坐標系統:

            • 視口坐標: 對應物理坐標/設備坐標
            • 場景坐標: 對應邏輯坐標
            • 項坐標: 本地坐標

            window-viewport概念

            window指定了邏輯坐標的矩形范圍,viewport指定了設備坐標的矩形范圍,和WorldTransform(世界轉換矩陣)一起,決定了邏輯坐標和設備坐標之間的轉換

             

            可以使用QGraphicsItemAnimation來動畫一個Item,使用QTimeLine來控制時間進度

             

            其它特性

            Animation動畫

            一個Item只能有效的和一個Animation對象關聯(by QGraphicsItemAnimation::setItem),因為Animation對象設置圖項Item的轉換矩陣時,會替換對象現有的矩陣。 所以你不能通過綁定多個Animation對象來做多重動畫,但是你可以在一個Animation對象中設置多種變換效果(或者用分組的方法,分級控 制?)


            QGraphicsItemAnimation直接繼承自QObject,和普通的QAbstractAnimation沒有關系,所以沒法只用用QAnimationGroup來組裝,然后串行/并行使用多個動畫。

             

            圖形控件和布局管理

            QGraphicsWidget的目的是在圖形對象的功能基礎上提供類似QWidget的功能。(從QGraphicsObject和 QGraphicsLayoutItem繼承來),從而可以使用完整的Widget控件屬性,設置字體,Style,提供size hints,以及信號槽機制等。

             

            QGraphicsLayout是專門用來布局QGraphicsWidget的布局控件。你可以通過多重繼承QGraphicsLayoutItem來定制QGraphicsItem使其能被QGraphicsLayout所管理

            嵌入普通控件

            你可以通過QGraphicsScene::addWidget來將一個普通QWidget嵌入到視圖體系中來使用,本質是通過創建一個代理控件 (QGraphicsProxyWidget)來在QWidget和QGraphicsItem之間傳遞事件。需要注意的是,這只是一個特殊的實現方式, 對性能有要求的程序不宜使用這個機制。(沒有太看出哪里對性能有很大影響)

             

            QGraphicsProxyWidget能夠處理復雜的控件嵌套,甚至能自動對被嵌套控件的子Popup Window控件創建代理控件。
             

            QGraphicsView本身也是一個普通QWidget控件,所以可以被添加到Scene中,創建復雜的嵌套視圖體系

            posted on 2013-02-06 10:38 米米 閱讀(2027) 評論(0)  編輯 收藏 引用 所屬分類: qt
            久久精品国产亚洲精品2020| 久久亚洲春色中文字幕久久久| 久久青青草原国产精品免费| 国产无套内射久久久国产| 伊人久久综合热线大杳蕉下载| 亚洲日本va午夜中文字幕久久| 伊人久久大香线蕉亚洲| 亚洲一区中文字幕久久| 久久中文字幕精品| 久久免费美女视频| 狠狠色丁香久久婷婷综合| 久久青青草原综合伊人| 亚洲va久久久噜噜噜久久| 99久久精品国产一区二区三区 | 久久不射电影网| 亚洲国产成人久久综合野外| 精品熟女少妇a∨免费久久| 久久成人永久免费播放| 久久超碰97人人做人人爱| 日本精品一区二区久久久| 国产精品久久久久久影院| 一本色综合网久久| 深夜久久AAAAA级毛片免费看| 久久综合综合久久97色| 97久久久精品综合88久久| 国内精品久久久久影院亚洲| 伊人色综合久久| 97久久香蕉国产线看观看| 色综合久久久久久久久五月| 久久久亚洲精品蜜桃臀| 88久久精品无码一区二区毛片 | 久久香蕉国产线看观看精品yw| 久久亚洲国产最新网站| 亚洲国产成人乱码精品女人久久久不卡 | 久久无码人妻一区二区三区午夜| 中文精品99久久国产 | 日产精品99久久久久久| 亚洲国产另类久久久精品黑人| 囯产精品久久久久久久久蜜桃| 久久大香萑太香蕉av| 久久免费看黄a级毛片|