1. 程式人生 > >QT入門(六) GraphicsView控制元件的使用

QT入門(六) GraphicsView控制元件的使用

       GraphicsView框架結構主要包括三個類:QGraphicsScene(場景)、QGraphicsView(檢視)、QGraphicsItem(圖元)。

       主要應用方式是:GraphicsView繪圖時首先建立一個場景,然後建立圖元物件(如一個直線物件、一個多邊形物件),再使用場景的add()函式,將圖元物件新增到場景中,最後通過檢視進行顯示,部分程式碼如下:

            QGraphicsScene *scene = new QGraphicsScene;  
            scene->addPixmap(QPixmap::fromImage(*image));  
            ui->graphicsView->setScene(scene);  
            ui->graphicsView->resize(image->width() + 10, image->height() + 10);  
            ui->graphicsView->show();  

      分別介紹三個類:

一、QGraphicsScene(場景)

       QGraphicsScene是不可見的,只用於管理圖元。為了檢視場景,需要建立一個檢視元件。

一個場景分為三個層:圖元層、前景層和背景層。場景的繪製總是從背景層開始,然後是圖形項層,最後是前景層。

主要功能如下:

        1、管理大量圖元,查詢,新增,移動和刪除等動作。

        2、傳遞滑鼠和鍵盤事件給圖元。

二、QGraphicsView(檢視)

       1、 QGraphicsView是檢視視窗部件,使場景內容視覺化,可以連線多個檢視到一個場景,也可以為相同資料來源的資料集提供不同的檢視。

       2、檢視接收鍵盤和滑鼠的輸入事件,並把事件翻譯為場景事件(將座標轉換為場景的座標),再發送到場景。

三、QGraphicsItem(圖元)

       1、QGraphicsItem是圖元的基類。QGraphics View框架提供了多種標準的圖元: QGraphicsEllipseItem(橢圓)、QGraphicsSimpleTextItem(簡單文字圖元)等

       2、支援滑鼠和鍵盤事件,支援碰撞檢測

      3、向場景中新增圖元(需要引用標頭檔案qgraphicsitem.h)

QGraphicsScene* originalScene = new QGraphicsScene(this);

QGraphicsRectItem* rect0 = new QGraphicsRectItem(1, 2, 1000, 1000, 0);

Scene->addItem(rect0);
Scene->itemAt(100, 100, QTransform());

四、GraphicsView的座標系統

       分別包括圖元座標系、場景座標系、製圖座標系,座標變換函式如下:

       QGraphicsView::mapToScene()檢視到場景

       QGraphicsView::mapFromScene() 場景到檢視

       QGraphicsItem::mapFromScene()  場景到圖元

       QGraphicsItem::mapToScene()  圖元到場景

       QGraphicsItem::mapToParent()  子圖元到父圖元

       QGraphicsItem::mapFromParent() 父圖元到子圖元

       QGraphicsItem::mapToItem()本圖元到其他圖元

       QGraphicsItem::mapFromItem()其他圖元到本圖元