• <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>
              清源游民 gameogre@gmail.com

            關鍵特性

            縮放與旋轉
            QGraphicsView通過QGraphicsView::setMatrix()支持同QPainter一樣的仿射變換,通過對一個視圖應用變換,你可以很容易地支持普通的導航特性如縮放與旋轉。下面是一個例子:
            class View:;public QGraphicsView
            {
            Q_OBJECT
            //.....
            public slots:
            void zoomIn() {scale(1.2,1.2);}
            void zoomOut() {scale(1/1.2,1/1.2);}
            void rotateLeft() {rotate(-10);}
            void rotateRight() {rotate(10);}
            };
            這些槽應與QToolButtons聯接,并使autoRepeat有效。當對視圖變換時,QGraphicsView會對視圖中心進行校正。

            拖拽
            因為QGraphicsView繼承自QWidget,它也提供了像QWidget那樣的拖拽功能,另處,為了方便,Graphics View柜架也為場景,每個item提供拖拽支持。當視圖接收到拖拽事件,它可翻譯為QGraphicsSceneDragDropEvent,再發送到場景。場景接管這個事件,把它發送到光標下接受拖拽的第一個item。
            從一個item開始拖拽時,創建一個QDrag對象,傳遞開始拖拽的那個widget的指針。Items可以同時被多個視圖觀察,但只有一個視圖可以開始拖拽。拖拽在多數情況下是從按下鼠標或是移動鼠標開始的,因此,在 mousePressEvent()或mouseMoveEvent()中,你可以從事件中得到那個原始的widget指針,例如:
            void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
            {
             QMimeData *data=new QMimeData;
             data->setColor(Qt::green);
            QDrag *drag=new QDrag(event->widget());
            drag->setMimeData(data);
            drag->start();
            }
            為了在場景中載取拖拽事件,你應重新實現QGraphicsScene::dragEnterEvent()和在QGraphicsItem的子類里任何與你特定場景需要的事件處理器。items也可以通過調用QGraphicsItem::setAcceptDrops()獲得拖拽支持,為了處理將要進行的拖拽,你需要重新實現QGraphicsItem::dragEnterEvent(),QGraphicsItem::dragMoveEvent(),QGraphicsItem::dragLeaveEvent()和QGraphicsItem::dropEvent()。
            光標與工具提示
            像QWidget一樣,QGraphicsItem也支持光標(QgraphicsItem::setCursor)與工具提示(QGraphicsItem::setToolTip())。當光標進入到item的區域,光標與工具提示被QGraphicsView激活(通過調用QGraphicsItem::contains()檢測)。你也可以直接在視圖上設置一個缺省光標(QGraphicsView::setCursor)。
            動畫
            Graphics View支持幾種級別的動畫。你可以很容易地通過把QGraphicsItemAnimatoin與你的item聯結來
            裝配出動畫路徑,這允許以時間線來控制動畫,在所有平臺上以穩定的速率運作。QGraphicsItemAnimation允許你為item的位置,旋轉,縮放,剪切,變換等產生一條路徑,動畫可以用QSlider來控制,或更為普遍使用的QTimeLine。
            另一種是從QObject和QGraphicsItem繼承,item可以設置自己的定時器,以在QObject::timeEvent()中增加步進的方式來控制動畫。
            第三種,是通過調用QGraphicsScene::advance()來推進場景,它又依次調用QGraphicsItem::advance().
            OpenGL渲染
            為了使用OpenGL渲染,你要設置一個新的QGLWidget作為QGraphicsView的視口:QGraphicsView::setViewPort()。假如你讓OpenGL提供反鋸齒功能,你需要OpenGL采樣緩沖支持。
            QGraphicsView view(&scene);
            view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
            Item組
            通過把一個item做為另一個item的孩子,你可以得到item組的大多數本質特性:這些items會一起移動,所有變換
            會從父到子傳遞。QGraphicsItem也可以為它的孩子處理所有的事件,這樣就允許以父親代表它所有的孩子,可以有效地把所有的items看作一個整體。
            另外,QGraphicsItemGroup是一個特殊的item,它既對孩子事件進行處理又有一個接口把items從一個組中增加和刪除。把一個item加到
            QGraphicsItemGroup仍會保留item的原始位置與變換,而給一個item重新指定父item則會讓item根據其新的父親重新定位。可以用QGraphicsScene::createItemGroup()建組。
            posted on 2007-09-27 00:09 清源游民 閱讀(7356) 評論(5)  編輯 收藏 引用 所屬分類: Qt

            FeedBack:
            # re: QT的Graphics View柜架(3/3)
            2007-09-27 18:42 | SmartPtr
            敢問閣下用的集成開發環境是哪個? 剛接觸linux開發, 不知道哪個用起來爽一點:)  回復  更多評論
              
            # re: QT的Graphics View柜架(3/3)
            2007-09-27 19:08 | 清源游民
            Windows下的vs2003, QT可以很好的集成。linux下不清楚。  回復  更多評論
              
            # re:尋找你加入
            2007-09-27 20:35 | 愛子
            QQ群名稱:游戲編程學習和開發M
            QQ群號碼:43047318
            創建人QQ號碼:光愛之子(273612158)
            QQ群描述:群里是可以提供游戲和有關游戲編程知識。同時還有數據結構學習。 和一些懂得操作系統原理的人 希望你加入。 謝謝!還有游戲策劃,運營有關方面知識。   回復  更多評論
              
            # re: QT的Graphics View柜架(3/3) [未登錄]
            2007-11-01 15:03 | bb
            Eclipse Qt Integration 1.0 ,run on windows and linux  回復  更多評論
              
            # re: QT的Graphics View柜架(3/3)
            2008-10-20 11:07 | 61003781
            Windows下的vs2003.net 與QT3.x能夠通過QT3.x的QMsNetSetup.msi能夠很好地結合。請問您用的是QT4嗎,是通過誰的QMsNetSetup.msi與vs2003.net 結合的呢?  回復  更多評論
              
            <2007年3月>
            25262728123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            留言簿(35)

            隨筆分類(78)

            隨筆檔案(74)

            文章檔案(5)

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            99久久婷婷国产一区二区| 色婷婷综合久久久久中文一区二区 | 亚洲AV无码一区东京热久久| 午夜精品久久影院蜜桃| 久久久久久综合网天天| 久久国产精品久久久| 国产午夜电影久久| 伊人久久大香线蕉亚洲| 日本免费久久久久久久网站| 亚洲国产一成久久精品国产成人综合 | 亚洲中文字幕无码久久2017| 国产精品久久网| 久久婷婷五月综合国产尤物app | 久久91精品久久91综合| 中文字幕精品久久| 99久久免费只有精品国产| 亚洲国产精品无码久久98| 久久黄视频| 久久香蕉综合色一综合色88| 天天爽天天狠久久久综合麻豆| 久久国产成人精品国产成人亚洲| 久久天天躁狠狠躁夜夜avapp| 精品国产一区二区三区久久蜜臀| 国产亚洲综合久久系列| 久久精品国产亚洲AV香蕉| 久久久国产精品| 国产69精品久久久久99| 99久久er这里只有精品18| 亚洲AV无码久久精品蜜桃| 久久久精品久久久久影院| 久久夜色精品国产www| 久久se精品一区二区影院| 色偷偷888欧美精品久久久| aaa级精品久久久国产片| 久久精品亚洲中文字幕无码麻豆| 伊人久久大香线蕉综合影院首页| 伊人久久大香线蕉亚洲| 久久天堂AV综合合色蜜桃网| 久久国产欧美日韩精品| 国产精品毛片久久久久久久| www性久久久com|