QT 시작 (6) GraphicsView 컨트롤 사용

2072 단어 QT
GraphicsView 프레임 구조는 주로 세 가지 종류를 포함하는데 그것이 바로 QGraphicsScene(장면), QGraphicsView(시도), QGraphicsItem(엔티티)이다.
주요 응용 방식은 GraphicsView에서 그림을 그릴 때 먼저 장면을 생성한 다음에 도원 대상(예를 들어 직선 대상, 다각형 대상)을 만들고 장면의dd() 함수를 사용하여 도원 대상을 장면에 추가한 다음에 보기를 통해 표시한다. 일부 코드는 다음과 같다.
            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();  

세 가지 클래스를 소개합니다.
1. QGraphicsScene(장면)
QGraphicsScene은 표시되지 않으며 엔티티 관리에만 사용됩니다.장면을 보기 위해서 보기 구성 요소를 만들어야 합니다.
하나의 장면은 세 개의 층으로 나뉘는데 그것이 바로 도원층, 전경층과 배경층이다.장면의 그리기는 항상 배경 층에서 시작하고 그 다음은 도형 항목 층이며 마지막은 전경 층이다.
주요 기능은 다음과 같습니다.
1. 대량의 엔티티를 관리하고, 찾기, 추가, 이동, 삭제 등의 동작을 한다.
2. 마우스와 키보드 이벤트를 엔티티에 전달한다.
2. QGraphicsView(보기)
1. QGraphicsView는 보기 창 위젯으로 장면의 내용을 시각화하고 여러 개의 보기를 한 장면에 연결할 수 있으며 같은 데이터 원본의 데이터 집합에 서로 다른 보기를 제공할 수 있다.
2. 보기는 키보드와 마우스의 입력 이벤트를 수신하고 이벤트를 장면 이벤트(좌표를 장면의 좌표로 변환)로 번역하여 장면에 전송한다.
3. QGraphicsItem(엔티티)
1. QGraphicsItem은 엔티티의 기본 클래스입니다.QGraphics View 프레임워크는 QGraphics EllipseItem(타원), QGraphics Simple TextItem(간단한 텍스트 엔티티) 등 다양한 표준 엔티티를 제공합니다.
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());

4.GraphicsView의 좌표 시스템
엔티티 좌표계, 장면 좌표계, 도면 좌표계가 각각 포함되며 좌표 변환 함수는 다음과 같습니다.
QGraphicsView::mapToScene() 뷰에서 장면으로
QGraphicsView:::mapFromScene() 장면에서 보기로
QGraphicsItem:::mapFromScene() 장면에서 엔티티로
QGraphicsItem:::mapToScene() 엔티티에서 장면으로
QGraphicsItem:::mapToParent () 하위 엔티티에서 모 엔티티
QGraphicsItem:::mapFromParent () 모 엔티티에서 자 엔티티로
QGraphicsItem:::mapToItem() 이 엔티티에서 다른 엔티티로
QGraphicsItem:::mapFromItem() 기타 엔티티를 이 엔티티로

좋은 웹페이지 즐겨찾기