圖形視圖框架_第1頁
圖形視圖框架_第2頁
圖形視圖框架_第3頁
圖形視圖框架_第4頁
圖形視圖框架_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、圖形視圖框架(The QGraphics View Framework)圖形視圖提供了一個(gè)外表(surface)來實(shí)現(xiàn)大量的客戶所做的2D圖形項(xiàng)的管理和相互的結(jié)合;一個(gè)視圖窗口部件來使這些項(xiàng)可視化,并支持縮放和旋轉(zhuǎn)。該框架包括一個(gè)事件傳播體系,可以使得場景中的項(xiàng)的交叉可以達(dá)到雙精度的精確控制。其中的項(xiàng)可以處理事件、鼠標(biāo)按壓、移動(dòng)、釋放和雙擊事件,它們也可以追蹤鼠標(biāo)的移動(dòng)。圖形視圖使用一個(gè)BSP(二進(jìn)制空間分區(qū)Binary Space Partitioning)樹來提供快速的項(xiàng)發(fā)現(xiàn),正因?yàn)槿绱?,它可以使巨大的場景?shí)時(shí)地可視化,即便它有上百萬個(gè)項(xiàng)(item)。圖形視圖是在Qt4.2中引入的,取代了

2、以前的QCanvas,如果需要從QCanvas移植,參見“Porting to Graphics View”主題:l圖形視圖的體系架構(gòu) 場景(Scene) 視圖(View) 項(xiàng)(Item)2圖形視圖的坐標(biāo)系統(tǒng) 項(xiàng)坐標(biāo) 場景坐標(biāo) 視圖坐標(biāo) 坐標(biāo)映射3主要的特性 縮放和旋轉(zhuǎn) 打印 拖放 光標(biāo)和提示 動(dòng)畫 OpenGL展示 項(xiàng)的成組 窗口部件和布局 嵌入式窗口部件支持圖形視圖體系架構(gòu)圖形視圖提供了基于項(xiàng)的模型視圖編程方式,很象交互視圖(InterView)的方便的類如QTableWidget,QTreeWidget,QListWidget。多個(gè)視圖可以用來觀察一個(gè)場景,場景包含了變化的幾何形狀的項(xiàng)。

3、場景(Scene)QGraphicsScene提供了圖形視圖的場景,場景承擔(dān)下列的責(zé)任: 提供一個(gè)快速的接口用來管理大量的項(xiàng)。 向每個(gè)項(xiàng)傳遞事件。 管理項(xiàng)的狀態(tài),如選中、焦點(diǎn)處理。 提供無變形的展示功能,主要為了打印。場景作為QGraphicsItem對(duì)象的容器,項(xiàng)可以調(diào)用QGraphicsScene:addItem()加入場景。QGraphicsScene:items()和它的重載可以返回所有的項(xiàng),包括點(diǎn)、長方形、多邊形、通用矢量路徑。QGraphicsScene:itemAt()返回在特定點(diǎn)上最上邊的項(xiàng)。所有項(xiàng)發(fā)現(xiàn)函數(shù)可以依次返回在堆棧中的項(xiàng)(最先返回的是最上邊的,最后返回的是最下邊的)。

4、QGraphicsScene scene;QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100);QGraphicsItem *item = scene.itemAt(50, 50);/ item = rectQGraphicsScene的事件傳遞架構(gòu)給場景事件確定時(shí)間表,用于傳給項(xiàng),和管理項(xiàng)之間的傳遞。如果場景在某個(gè)位置收到一個(gè)鼠標(biāo)按下事件,場景將把該事件傳遞給在那個(gè)位置的項(xiàng)。QGraphicsScene也管理某些項(xiàng)狀態(tài),如項(xiàng)選擇和聚焦。你可以在場景上通過QGraphics:setSelectionArea()選擇項(xiàng),傳遞

5、任意的形狀。這個(gè)功能也被在QGraphicsView中用做橡皮擦選項(xiàng)。另外一個(gè)由QGraphicsScene處理的狀態(tài)是一個(gè)項(xiàng)是否有鍵盤輸入聚焦。你可以通過調(diào)用QGraphics:setFocusItem()或QGraphicsItem:setFocus()來聚焦一個(gè)項(xiàng),或者通過調(diào)用QGraphicsScene:focusItem()來獲得當(dāng)前的聚焦。最后,QGraphicsScene允許通過QGraphicsScene:render()函數(shù)將場景的某一部分展示到一個(gè)繪畫設(shè)備中。你可以在以后的打印段落中看到更多的相關(guān)內(nèi)容。視圖(The View)QGraphicsView提供了視圖窗口部件,它

6、使場景的內(nèi)容可視化。你可以給一個(gè)場景多個(gè)視圖,從而針對(duì)同樣的數(shù)據(jù)集提供幾個(gè)視圖端口。視圖窗口部件是滾動(dòng)區(qū)域,對(duì)大型的場景圖提供滾動(dòng)的瀏覽方式。為了支持OpenGL,你可以通過調(diào)用QGraphicsView:setViewport()來設(shè)置一個(gè)QGLWidget作為視圖端口。QGraphicsScene scene;myPopulateScene(&scene);QGraphicsView view(&scene);view.show();視圖接收來自鍵盤和鼠標(biāo)的輸入事件,并在發(fā)送事件給可視化的場景之前,將它們轉(zhuǎn)化為場景事件(將坐標(biāo)轉(zhuǎn)化為適當(dāng)?shù)膱鼍白鴺?biāo))。使用變換矩陣,QGraphicsView

7、:matrix(),視圖可以變換場景的坐標(biāo)系統(tǒng),以便處理高級(jí)的瀏覽特性,如縮放和旋轉(zhuǎn)。為了方便,QGraphicsView也提供視圖和場景坐標(biāo)之間轉(zhuǎn)換的函數(shù):QGraphicsView:mapToScene()和QGraphicsView:mapFromScene()。項(xiàng)(The Item)QGraphicsItem是場景中圖形項(xiàng)的基類。圖形視圖提供了幾個(gè)典型形狀的標(biāo)準(zhǔn)項(xiàng),如長方形QGraphicsRectItem,橢圓形QGraphicsEllipseItem和文本項(xiàng)QGraphicsTextItem,但是,當(dāng)你撰寫客戶化項(xiàng)時(shí),QGraphicsItem的強(qiáng)大特性就體現(xiàn)出來了,除此之外,QG

8、raphicsItem還支持下面的特性: 鼠標(biāo)按壓,移動(dòng),釋放,雙擊事件,以及鼠標(biāo)鉤子事件(hover events),滾輪事件(wheel events),上下文事件(context menu events) 鍵盤輸入聚焦,特定鍵事件 拖放 成組(Grouping),通過父子關(guān)系或者用QGraphicsItemGroup 碰撞偵測項(xiàng)象QGraphicsView一樣,存在于局部坐標(biāo)系統(tǒng)(local coordinate system)中,它提供了很多函數(shù)用于在項(xiàng)和場景之間、項(xiàng)與項(xiàng)之間進(jìn)行坐標(biāo)映射。另外,和QGraphicsView一樣,它通過QGraphicsItem:matrix()函數(shù)變換

9、它的坐標(biāo)系統(tǒng)。這在旋轉(zhuǎn)和縮放單個(gè)項(xiàng)時(shí)非常有用。項(xiàng)可以包含另外的項(xiàng)(子項(xiàng)),父項(xiàng)的變換被它的所有子項(xiàng)繼承。不管項(xiàng)的累積變換有多少,它的所有函數(shù)(如QGraphicsItem:contains()、QGraphicsItem:boundingRect(),QGraphicsItem:collidesWith())還是在局部坐標(biāo)系統(tǒng)中操作。QGraphicsItem通過QGRaphicsItem:shape()函數(shù)和QGraphicsItem:collidesWith()函數(shù)支持碰撞偵測,這兩個(gè)都是虛函數(shù)。通過返回項(xiàng)形狀的局部坐標(biāo),QGRaphicsItem:shape()函數(shù)和QGraphicsI

10、tem:collidesWith()函數(shù)的QPainterPath將處理所有的碰撞偵測。如果你想提供自己的碰撞偵測,則可以重新實(shí)現(xiàn)QGraphicsItem:collidesWith()函數(shù)。圖形視圖坐標(biāo)系統(tǒng)(The Graphics View Coordinate System)圖形視圖基于笛卡兒坐標(biāo)系統(tǒng)(Cartesian coordinate system),項(xiàng)的位置和在場景中的幾何形狀由兩個(gè)數(shù)字組合代表:X坐標(biāo)和Y坐標(biāo)。當(dāng)使用變換的視圖觀察一個(gè)場景時(shí),場景中的一個(gè)單元會(huì)由屏幕上的一個(gè)點(diǎn)表示。有3個(gè)有效的坐標(biāo)系統(tǒng)來演繹圖形視圖:項(xiàng)坐標(biāo)、場景坐標(biāo)和視圖坐標(biāo)。為了簡化你的實(shí)現(xiàn),圖形視圖提供了

11、方便的函數(shù)允許你在三個(gè)坐標(biāo)系統(tǒng)之間映射。當(dāng)圖形展示時(shí),圖形視圖的場景坐標(biāo)對(duì)應(yīng)了QPainter的邏輯坐標(biāo),視圖坐標(biāo)對(duì)應(yīng)了設(shè)備的坐標(biāo)。在坐標(biāo)系統(tǒng)(The Coordinate System)文章中,介紹了邏輯坐標(biāo)(logical coordinate)和設(shè)備坐標(biāo)(device coordinate)的關(guān)系。項(xiàng)坐標(biāo)(Item Coordinates)項(xiàng)總是在它們自己的局部坐標(biāo)中。它們的坐標(biāo)一般是圍繞它們的中心點(diǎn)(0,0),并且這個(gè)中心也是左右變換的中心。項(xiàng)坐標(biāo)系統(tǒng)中的簡單幾何件一般是指項(xiàng)點(diǎn)、項(xiàng)線、項(xiàng)長方形。當(dāng)創(chuàng)建客戶化項(xiàng)時(shí),項(xiàng)坐標(biāo)是你要考慮的全部。QGraphicsScene和QGraphicsV

12、iew會(huì)為你實(shí)現(xiàn)所有的變換,這讓實(shí)現(xiàn)客戶化項(xiàng)變得相當(dāng)容易。例如,如果你收到了鼠標(biāo)按下或拖動(dòng)的事件,該事件的位置點(diǎn)是由項(xiàng)坐標(biāo)系統(tǒng)給出的,QGraphicsItem:contains()得到一個(gè)項(xiàng)坐標(biāo)的點(diǎn)參數(shù),若這個(gè)點(diǎn)在項(xiàng)中,則返回真,否則,返回假。同樣的,項(xiàng)綁定的矩形或形狀區(qū)域也是項(xiàng)坐標(biāo)系統(tǒng)的。項(xiàng)的位置是指在它的父坐標(biāo)系統(tǒng)中,項(xiàng)的中心點(diǎn)的坐標(biāo),有時(shí)候稱父坐標(biāo)。場景從這個(gè)意義上說是所有無父項(xiàng)的“parent”,頂層項(xiàng)的位置是在場景坐標(biāo)中。子坐標(biāo)是相對(duì)于父坐標(biāo)而言的,如果子坐標(biāo)沒有變換,那么子坐標(biāo)和父坐標(biāo)的差異是和項(xiàng)在父坐標(biāo)中的位置一樣的。如:如果一個(gè)沒有變換的子項(xiàng)正好位于其父項(xiàng)的中心點(diǎn)位置,那么,

13、這兩個(gè)項(xiàng)的坐標(biāo)系統(tǒng)是完全一樣的。如果子項(xiàng)的位置是(10,0),那么,子項(xiàng)的(0,10)點(diǎn)對(duì)應(yīng)了父項(xiàng)的(10,10)點(diǎn)。因?yàn)轫?xiàng)的位置和變換是相對(duì)于父項(xiàng)的,因此,雖然父項(xiàng)的坐標(biāo)變換隱含了子項(xiàng)的變換,但是,子項(xiàng)的坐標(biāo)不受父項(xiàng)坐標(biāo)變換的影響。在上述例子中,即使父項(xiàng)旋轉(zhuǎn)或縮放了,子項(xiàng)的(0,10)點(diǎn)始終對(duì)應(yīng)父項(xiàng)的(10,10)點(diǎn)。相對(duì)于場景,子項(xiàng)將跟隨場景的變換和定位。如果父項(xiàng)放大2倍,(2X,2X),子項(xiàng)在場景坐標(biāo)中的位置將是(20,0),它的(10,0)點(diǎn)將對(duì)應(yīng)場景中的(40,0)點(diǎn)。除了QGraphicsItem:pos()作為很少的例外,QGraphicsItem的函數(shù)操作都是在項(xiàng)坐標(biāo)是操作,而

14、不論項(xiàng)或者它的父項(xiàng)是否已經(jīng)做了坐標(biāo)變換。如:一個(gè)項(xiàng)的綁定矩形(即QGraphicsItem:boundingRect())總是給出項(xiàng)坐標(biāo)。場景坐標(biāo)(Scene Coordinates)場景為所有的項(xiàng)提供了基本的坐標(biāo)系統(tǒng)。場景坐標(biāo)系統(tǒng)描述了頂層項(xiàng)的位置,并給通過視圖傳遞給場景的所有事件提供了基本的坐標(biāo)體系。場景中的每一個(gè)項(xiàng),除了它自己的局部項(xiàng)位置和綁定矩形外,都有一個(gè)場景位置和綁定矩形(QGraphicsItem:scenePos(),QGraphicsItem:sceneBoundingRect())。場景位置描述了項(xiàng)在場景坐標(biāo)中的位置,場景綁定矩形使得QGraphicsScene確定場景中需

15、要變化的區(qū)域。場景的變化通過QGraphicsScene:changed()信號(hào)來通訊,參數(shù)就是場景的綁定矩形。視圖坐標(biāo)(View Coordinates)視圖坐標(biāo)是窗口部件的坐標(biāo),視圖坐標(biāo)中的每個(gè)坐標(biāo)對(duì)應(yīng)了一個(gè)象素。有關(guān)這個(gè)坐標(biāo)系統(tǒng)特殊的是它是相對(duì)于窗口部件的,或視圖端口(viewport),而不被所觀察的場景所影響。QGraphicsView視圖端口的左頂角總是(0,0),右底角總是(視寬,視高)。所有鼠標(biāo)事件和拖放事件最初始總是以視圖坐標(biāo)收到的,你需要將它影射成場景坐標(biāo)以方便和項(xiàng)交互。坐標(biāo)映射(Coordinate Mapping)在處理場景中的項(xiàng)時(shí),經(jīng)常使用從場景到項(xiàng),從項(xiàng)到項(xiàng),從視圖

16、到場景的坐標(biāo)和任意形狀的映射。例如:當(dāng)你在視圖端口按壓鼠標(biāo)時(shí),可以通過調(diào)用QGraphicsView:mapToScene()函數(shù),再跟上QGraphicsScene:itemAt()函數(shù)告訴場景那個(gè)項(xiàng)在當(dāng)前光標(biāo)下。也可以通過在項(xiàng)上調(diào)用QGraphicsItem:mapToScene()函數(shù),然后是QGraphicsView:mapToScene()函數(shù),獲知該項(xiàng)在視圖端口的什么位置。最后,若要知道項(xiàng)是否在視圖橢圓中,你可以向mapToScene()傳遞QPainterPath,向QGraphicsScene:items()函數(shù)傳遞mapped path來實(shí)現(xiàn)。通過調(diào)用QGraphicsIte

17、m:mapToScene()和QGraphicsItem:mapFromScene()函數(shù),可以映射任意的坐標(biāo)和形狀。也可以調(diào)用QGraphicsItem:mapToParent()和QGraphicsItem:mapFromParent ()函數(shù)映射到父項(xiàng)。所有的映射函數(shù)可以映射點(diǎn)、長方形、多邊形和路徑。同樣的,在視圖中有同樣的映射函數(shù),將坐標(biāo)和形狀映射到場景。QGraphicsView:mapFromScene()和QGraphicsView:mapToScene()。要從視圖映射到項(xiàng),你需要先映射到場景,再從場景映射到項(xiàng)。主要特性(Key Featue)縮放和旋轉(zhuǎn)(Zooming and

18、 rotating)QGraphicsView通過QGraphicsView:setMatrix(),象QPainter一樣,支持仿射變換。通過給視圖增加變換應(yīng)用,可以很容易地給普通的瀏覽增加如縮放和旋轉(zhuǎn)的特性。下面是一個(gè)例子,說明在QGraphicsView子類中如何實(shí)現(xiàn)縮放和旋轉(zhuǎn)的槽。class View : public QGraphicsViewQ_OBJECT.public slots:void zoomIn() scale(1.2, 1.2); void zoomOut() scale(1 / 1.2, 1 / 1.2); void rotateLeft() rotate(-10)

19、; void rotateRight() rotate(10); .;槽需要被聯(lián)系到QToolButtons,并使它的autoRepeat使能。當(dāng)你變換視圖時(shí),QGraphicsView保持視圖的中心成直線??梢詤⒁姟癊lastic Node”例子,學(xué)習(xí)如何實(shí)現(xiàn)基本的縮放特性。打?。≒rinting)圖形視圖通過它的展示函數(shù):QGraphicsScene:render()和QGraphicsView:render()提供單線(single-line)打印。函數(shù)提供相同的API,通過將QPainter傳遞給展示函數(shù),你可以打印場景、視圖的全部或部分內(nèi)容。例子顯示了如何使用QPainter將場景的

20、全部內(nèi)容打印到整頁紙上。QGraphicsScene scene;scene.addRect(QRectF(0, 0, 100, 200), Qt:black, QBrush(Qt:green);QPrinter printer;if (QPrintDialog(&printer).exec() = QDialog:Accepted) QPainter painter(&printer);painter.setRenderHint(QPainter:Antialiasing);scene.render(&painter);場景和視圖函數(shù)展示函數(shù)的差異是一個(gè)在場景坐標(biāo),另一個(gè)在視圖坐標(biāo)。QGra

21、phicsScene:render()常用于打印無變換的場景的全部內(nèi)容,如畫幾何數(shù)據(jù)文檔等。QGraphicsView:render()適合于打印屏幕快照(screenshots),缺省情況下,它展示視圖端口中的當(dāng)前內(nèi)容。QGraphicsScene scene;scene.addRect(QRectF(0, 0, 100, 200), Qt:black, QBrush(Qt:green);QPixmap pixmap;QPainter painter(&pixmap);painter.setRenderHint(QPainter:Antialiasing);scene.render(&pai

22、nter);painter.end();pixmap.save(scene.png);當(dāng)源區(qū)域和目標(biāo)區(qū)域的大小不匹配時(shí),源內(nèi)容進(jìn)行伸展以適合目標(biāo)區(qū)域。通過傳遞Qt:AspectRatioMode給你正調(diào)用的展示函數(shù),你可以在源內(nèi)容伸縮時(shí),保持或忽略縱橫比。拖放(Drag and Drop)因?yàn)镼GraphicsView間接繼承了QWidget,它也同樣提供QWidget提供的拖放功能。另外,為了方便,圖形視圖架構(gòu)給場景、每一個(gè)項(xiàng)提供了拖放支持。當(dāng)視圖收到一個(gè)拖動(dòng)作,它將拖放事件發(fā)給QGraphicsSceneDragDropEvent,它再發(fā)給場景,場景對(duì)事件按時(shí)序排列,并發(fā)給光標(biāo)下的第一個(gè)項(xiàng)

23、來接受放置。為了從一個(gè)項(xiàng)上開始拖動(dòng)作,要產(chǎn)生一個(gè)QDrag對(duì)象,將指針傳給開始拖的那個(gè)窗口部件。在同一時(shí)刻,項(xiàng)可以被很多視圖觀察到,但是,只有一個(gè)視圖可以開始拖動(dòng)作。拖動(dòng)作在大多數(shù)情況下是因?yàn)槭髽?biāo)按下和提供而觸發(fā)開始的,因此,在mousePressEvent()和mouseMoveEvent()函數(shù)中,你可以從事件中得到起始窗口部件的指針。如下面的例子:void CustomItem:mousePressEvent(QGraphicsSceneMouseEvent *event)QMimeData *data = new QMimeData;data-setColor(Qt:green);QD

24、rag *drag = new QDrag(event-widget();drag-setMimeData(data);drag-start();為了給場景截取拖放事件,在QGraphicsItem子類中,需要重實(shí)現(xiàn)QGraphicsScene:dragEnteEvent()函數(shù),哪個(gè)事件處理你特殊的場景需要。你可以在圖形視圖拖放操作文檔中,查看每一個(gè)QGraphicsScene的事件句柄來學(xué)習(xí)更多的知識(shí)。參見“Drag and Drop”例子,它是一個(gè)在圖形視圖中支持拖放操作的演示。光標(biāo)和提示(Cursors and Tooltips)象QWidget一樣,QGraphicsItem也提供光

25、標(biāo)支持(QGraphicsItem:setCursor()),提示支持(QGraphicsItem:setToolTip())。當(dāng)鼠標(biāo)的光標(biāo)進(jìn)入項(xiàng)的區(qū)域時(shí)(調(diào)用QGraphicsItem:contains()檢測),光標(biāo)和提示由QGraphicsView激活。你可以調(diào)用QGraphicsView:setCursor()直接在視圖上設(shè)置一個(gè)缺省光標(biāo)。參見“Drag and Drop”例子中,提示和光標(biāo)形狀處理的實(shí)現(xiàn)。動(dòng)畫(Animation)視圖在幾個(gè)層面支持動(dòng)畫。你可以通過將QGraphicsItemAnimation和項(xiàng)關(guān)聯(lián),來簡單地組裝動(dòng)畫路徑,這種方式允許以時(shí)間線方式動(dòng)畫在所有平臺(tái)上都可

26、以以一個(gè)穩(wěn)定的速度操作(幀速會(huì)因平臺(tái)的性能而改變)。QGraphicsItemAnimation允許為項(xiàng)的位置、旋轉(zhuǎn)、尺寸縮放、裁減、變換創(chuàng)建路徑。動(dòng)畫可以被QSlider控制,或者普遍的是被QTimeLine控制。另外一個(gè)方式是創(chuàng)建一個(gè)項(xiàng),它從QObject和QGraphicsItem繼承而來。這個(gè)項(xiàng)可以建立它自己的定時(shí)器,在QObject:timeEvent()中控制動(dòng)畫的進(jìn)階步驟。第三種方式,這種方式大部分是為了和Qt3中的QCanvas保持兼容,調(diào)用QGraphicsScene:advance()來推進(jìn)(advance)場景,進(jìn)而調(diào)用QGraphicsItem:advance()推進(jìn)項(xiàng)

27、。參見“Drag and Drop”例子中關(guān)于基于時(shí)間線技術(shù)動(dòng)畫的演示。OpenGl展示(OpenGL Rendering)為了使用OpenGL展示,你只要簡單地調(diào)用QGraphicsView:setViewport()來設(shè)置一個(gè)新的QGLWidget作為QGraphicsView的視圖端口。如果你想要OpenGL具有無鋸齒特性,你需要OpenGL采樣緩沖支持(參見QGLFormat:sampleBuffers())。例子:QGraphicsView view(&scene);view.setViewport(new QGLWidget(QGLFormat(QGL:SampleBuffers)

28、;項(xiàng)成組(Item Groups)通過使一個(gè)項(xiàng)成為另外一個(gè)項(xiàng)的子項(xiàng),你可以得到有關(guān)項(xiàng)成組的關(guān)鍵特性:這些項(xiàng)會(huì)一起移動(dòng),所有的變換都從父項(xiàng)傳遞給子項(xiàng)。QGraphicsItem能夠?yàn)樗淖禹?xiàng)處理所有的事件(參見QGraphicsItem:setHandlesChildEvents())。這允許父項(xiàng)代表子項(xiàng)動(dòng)作,可以有效地將所有子項(xiàng)當(dāng)作一個(gè)整體。另外,QGraphicsItemGroup是一個(gè)特殊的項(xiàng),它聚合了子項(xiàng)事件處理,并有一個(gè)有用的接口用來在組中增加和移除項(xiàng)。向QGraphicsItemGroup將保持項(xiàng)的原始位置和變換,而重父化項(xiàng)會(huì)引起子項(xiàng)的重定位,因?yàn)樾碌母疙?xiàng)的關(guān)系。為來方便,你可以通過場景調(diào)用QGraphicsScene:createItemGroup()來創(chuàng)建QGraphicsItemGroups。窗口部件和布局(Widgets and Layouts)Qt4.4通過QGraphicsWidget引入了對(duì)幾何和布局感應(yīng)的支持。這個(gè)特殊的基類與QWidget相似,但又不同。它不從QPaintDevice繼承,而是從QGraphicsItem繼承。這允許你撰寫具有事件、信號(hào)和槽、尺寸線索和策略的完整窗口部件,你也能通過QGraphicsLinearLayout和QGraphicsGridLayout管理布局中的窗口部件的幾何特性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論