成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解 QT 中Graphics View柜架 (下篇)

移動開發(fā)
Graphics View使用BSP樹來提供對item的快速查找,使用這種技術,它可以實時地繪制大規(guī)模場景,甚至以百萬items計。Graphics View在Qt 4.2中被引用,它替代了它的前輩QCanvas。

QT Graphics View柜架是本文要介紹的內容,本文分為三部分為大家介紹,本篇文章為下篇,想要繼續(xù)深入了解的請繼續(xù)關注。參考末尾。本節(jié)介紹的是詳解 QT Graphics View柜架 (下篇),繼續(xù)上篇 詳解 QT 中Graphics View柜架 (中篇)的內容繼續(xù)介紹,先來看內容

關鍵特性

縮放與旋轉

QGraphicsView通過QGraphicsView::setMatrix()支持同QPainter一樣的仿射變換,通過對一個視圖應用變換,你可以很容易地支持普通的導航特性如縮放與旋轉。下面是一個例子:

  1. void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event)  
  2. {  
  3.  QMimeData *data=new QMimeData;  
  4.  data->setColor(Qt::green);  
  5. QDrag *drag=new QDrag(event->widget());  
  6. drag->setMimeData(data);  
  7. drag->start();  

這些槽應與QToolButtons聯(lián)接,并使autoRepeat有效。當對視圖變換時,QGraphicsView會對視圖中心進行校正。

拖拽

因為QGraphicsView繼承自QWidget,它也提供了像QWidget那樣的拖拽功能,另處,為了方便,Graphics View柜架也為場景,每個item提供拖拽支持。當視圖接收到拖拽事件,它可翻譯為QGraphicsSceneDragDropEvent,再發(fā)送到場景。場景接管這個事件,把它發(fā)送到光標下接受拖拽的***個item。

從一個item開始拖拽時,創(chuàng)建一個QDrag對象,傳遞開始拖拽的那個widget的指針。Items可以同時被多個視圖觀察,但只有一個視圖可以開始拖拽。拖拽在多數(shù)情況下是從按下鼠標或是移動鼠標開始的,因此,在 mousePressEvent()或mouseMoveEvent()中,你可以從事件中得到那個原始的widget指針,例如:

  1. void CustomItem::mousePressEvent(QGraphicsSceneMouseEvent *event)  
  2. {  
  3.  QMimeData *data=new QMimeData;  
  4.  data->setColor(Qt::green);  
  5. QDrag *drag=new QDrag(event->widget());  
  6. drag->setMimeData(data);  
  7. drag->start();  

為了在場景中載取拖拽事件,你應重新實現(xiàn)QGraphicsScene::dragEnterEvent()和在QGraphicsItem的子類里任何與你特定場景需要的事件處理器。items也可以通過調用QGraphicsItem::setAcceptDrops()獲得拖拽支持,為了處理將要進行的拖拽,你需要重新實現(xiàn)QGraphicsItem::dragEnterEvent(),QGraphicsItem::dragMoveEvent(),QGraphicsItem::dragLeaveEvent()和QGraphicsItem::dropEvent()。

光標與工具提示

像QWidget一樣,QGraphicsItem也支持光標(QgraphicsItem::setCursor)與工具提示(QGraphicsItem::setToolTip())。當光標進入到item的區(qū)域,光標與工具提示被QGraphicsView激活(通過調用QGraphicsItem::contains()檢測)。你也可以直接在視圖上設置一個缺省光標(QGraphicsView::setCursor)。

動畫

Graphics View支持幾種級別的動畫。你可以很容易地通過把QGraphicsItemAnimatoin與你的item聯(lián)結來

裝配出動畫路徑,這允許以時間線來控制動畫,在所有平臺上以穩(wěn)定的速率運作。QGraphicsItemAnimation允許你為item的位置,旋轉,縮放,剪切,變換等產生一條路徑,動畫可以用QSlider來控制,或更為普遍使用的QTimeLine。

另一種是從QObject和QGraphicsItem繼承,item可以設置自己的定時器,以在QObject::timeEvent()中增加步進的方式來控制動畫。

第三種,是通過調用QGraphicsScene::advance()來推進場景,它又依次調用QGraphicsItem::advance().

OpenGL渲染

為了使用OpenGL渲染,你要設置一個新的QGLWidget作為QGraphicsView的視口:QGraphicsView::setViewPort()。假如你讓OpenGL提供反鋸齒功能,你需要OpenGL采樣緩沖支持。

  1. QGraphicsView view(&scene);  
  2. view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); 

Item組

通過把一個item做為另一個item的孩子,你可以得到item組的大多數(shù)本質特性:這些items會一起移動,所有變換

會從父到子傳遞。QGraphicsItem也可以為它的孩子處理所有的事件,這樣就允許以父親代表它所有的孩子,可以有效地把所有的items看作一個整體。

另外,QGraphicsItemGroup是一個特殊的item,它既對孩子事件進行處理又有一個接口把items從一個組中增加和刪除。把一個item加到

QGraphicsItemGroup仍會保留item的原始位置與變換,而給一個item重新指定父item則會讓item根據(jù)其新的父親重新定位。可以用QGraphicsScene::createItemGroup()建組。

小結:詳解 QTGraphics View柜架 (下篇)的內容介紹完了,希望本篇文章對你有所幫助!更所相關內容請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯(lián)網
相關推薦

2011-06-30 10:09:26

QT Graphics View

2011-06-30 10:22:48

QT Graphics View

2011-06-17 10:19:11

Qt QWidge QSetting

2011-06-17 09:58:26

Qt Chapter QObject

2011-07-05 18:40:19

QT 信號 機制

2011-06-24 16:50:06

QT 框架 OpenCV

2011-06-23 18:16:59

Qt Qtopia

2011-07-01 14:20:59

Qt 事件

2011-06-14 11:48:38

Webkit QT

2011-06-24 11:12:39

Qt 多線程 線程

2011-06-17 17:16:01

Qt Eclipse Linux

2011-06-17 13:39:47

Qt 文件

2010-05-18 13:53:34

Subversion插

2011-06-27 13:49:43

Qt 數(shù)據(jù)庫 QSqlQueryM

2011-06-30 16:08:05

Qt 字庫 QPF

2011-06-24 09:13:30

QT SDL

2011-06-21 15:58:20

Qt 數(shù)據(jù)庫

2011-06-27 10:28:45

Qt 網絡 TCP

2011-06-22 16:08:40

Qt 多線程 事件循環(huán)

2011-06-28 15:18:45

Qt 單例模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 第一av | 精品国产一区二区三区久久影院 | 成年免费大片黄在线观看一级 | 欧美日韩在线一区 | 欧美国产精品一区二区三区 | 婷婷桃色网 | 亚洲国产区 | 中文字幕a√ | 国产精品美女久久久久久免费 | 欧美一级免费看 | 99久久久无码国产精品 | 欧美日韩高清免费 | 91资源在线 | 久久久亚洲一区 | 国产成人精品a视频一区www | 二区在线观看 | 国产日韩久久 | 福利国产 | 91中文在线观看 | 亚洲国产一区在线 | 91色啪 | 国内精品视频免费观看 | 91在线视频观看 | 丝袜久久 | 91传媒在线观看 | 福利久久 | 精品亚洲一区二区三区 | 亚洲精品一区二区网址 | 国产精品视频一二三区 | 久久久夜色精品亚洲 | 中文字幕在线观看一区二区 | 亚洲一区二区免费电影 | 亚洲欧美国产毛片在线 | 日韩有码在线观看 | 一区二区三区国产在线观看 | av色噜噜| 欧美精品一区二区三区四区 | 日本三级电影在线观看视频 | 国产综合久久久久久鬼色 | 久久久91 | 黄色一级毛片免费看 |