QT 시작 (6) GraphicsView 컨트롤 사용
2072 단어 QT
주요 응용 방식은 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() 기타 엔티티를 이 엔티티로
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간편한 채팅 시스템 - 메시지 전달 서버메시지 전송 서버는 메시지 대기열에서 온 데이터를 받아들여 디코딩, 식별 등을 하고 마지막으로 분류를 나눈다.예를 들어 채팅 시스템은 같은 그룹과 같은 세션의 정보를 같은 그룹 서비스로 전송한다(물론 아직 같은 그룹...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.