QGraphicsView Class

QGraphicsView 클래스는 QGraphicsScene...의 내용을 표시하는 위젯을 제공합니다.. ..

헤더: #include <QGraphicsView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속합니다: QAbstractScrollArea

공용 유형

flags CacheMode
enum CacheModeFlag { CacheNone, CacheBackground }
enum DragMode { NoDrag, ScrollHandDrag, RubberBandDrag }
enum OptimizationFlag { DontSavePainterState, DontAdjustForAntialiasing, IndirectPainting }
flags OptimizationFlags
enum ViewportAnchor { NoAnchor, AnchorViewCenter, AnchorUnderMouse }
enum ViewportUpdateMode { FullViewportUpdate, MinimalViewportUpdate, SmartViewportUpdate, BoundingRectViewportUpdate, NoViewportUpdate }

속성

공용 함수

QGraphicsView(QWidget *parent = nullptr)
QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
virtual ~QGraphicsView()
Qt::Alignment alignment() const
QBrush backgroundBrush() const
QGraphicsView::CacheMode cacheMode() const
void centerOn(const QPointF &pos)
void centerOn(const QGraphicsItem *item)
void centerOn(qreal x, qreal y)
QGraphicsView::DragMode dragMode() const
void ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
void ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
void ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
void fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
void fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
void fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)
QBrush foregroundBrush() const
bool isInteractive() const
bool isTransformed() const
QGraphicsItem *itemAt(const QPoint &pos) const
QGraphicsItem *itemAt(int x, int y) const
QList<QGraphicsItem *> items() const
QList<QGraphicsItem *> items(const QPoint &pos) const
QList<QGraphicsItem *> items(int x, int y) const
QList<QGraphicsItem *> items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *> items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QPainterPath mapFromScene(const QPainterPath &path) const
QPoint mapFromScene(const QPointF &point) const
QPolygon mapFromScene(const QPolygonF &polygon) const
QPolygon mapFromScene(const QRectF &rect) const
QPoint mapFromScene(qreal x, qreal y) const
QPolygon mapFromScene(qreal x, qreal y, qreal w, qreal h) const
QPainterPath mapToScene(const QPainterPath &path) const
QPointF mapToScene(const QPoint &point) const
QPolygonF mapToScene(const QPolygon &polygon) const
QPolygonF mapToScene(const QRect &rect) const
QPointF mapToScene(int x, int y) const
QPolygonF mapToScene(int x, int y, int w, int h) const
QGraphicsView::OptimizationFlags optimizationFlags() const
void render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
QPainter::RenderHints renderHints() const
void resetCachedContent()
void resetTransform()
QGraphicsView::ViewportAnchor resizeAnchor() const
void rotate(qreal angle)
QRect rubberBandRect() const
Qt::ItemSelectionMode rubberBandSelectionMode() const
void scale(qreal sx, qreal sy)
QGraphicsScene *scene() const
QRectF sceneRect() const
void setAlignment(Qt::Alignment alignment)
void setBackgroundBrush(const QBrush &brush)
void setCacheMode(QGraphicsView::CacheMode mode)
void setDragMode(QGraphicsView::DragMode mode)
void setForegroundBrush(const QBrush &brush)
void setInteractive(bool allowed)
void setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)
void setOptimizationFlags(QGraphicsView::OptimizationFlags flags)
void setRenderHint(QPainter::RenderHint hint, bool enabled = true)
void setRenderHints(QPainter::RenderHints hints)
void setResizeAnchor(QGraphicsView::ViewportAnchor anchor)
void setRubberBandSelectionMode(Qt::ItemSelectionMode mode)
void setScene(QGraphicsScene *scene)
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)
void setTransform(const QTransform &matrix, bool combine = false)
void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor)
void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode)
void shear(qreal sh, qreal sv)
QTransform transform() const
QGraphicsView::ViewportAnchor transformationAnchor() const
void translate(qreal dx, qreal dy)
QTransform viewportTransform() const
QGraphicsView::ViewportUpdateMode viewportUpdateMode() const

재구현된 공용 함수

virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
virtual QSize sizeHint() const override

공용 슬롯

void invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)
void updateScene(const QList<QRectF> &rects)
void updateSceneRect(const QRectF &rect)

신호

void rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)

보호된 함수

virtual void drawBackground(QPainter *painter, const QRectF &rect)
virtual void drawForeground(QPainter *painter, const QRectF &rect)

재구현된 보호 함수

virtual void contextMenuEvent(QContextMenuEvent *event) override
virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void dragLeaveEvent(QDragLeaveEvent *event) override
virtual void dragMoveEvent(QDragMoveEvent *event) override
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *event) override
virtual void focusInEvent(QFocusEvent *event) override
virtual bool focusNextPrevChild(bool next) override
virtual void focusOutEvent(QFocusEvent *event) override
virtual void inputMethodEvent(QInputMethodEvent *event) override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void keyReleaseEvent(QKeyEvent *event) override
virtual void mouseDoubleClickEvent(QMouseEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *event) override
virtual void mousePressEvent(QMouseEvent *event) override
virtual void mouseReleaseEvent(QMouseEvent *event) override
virtual void paintEvent(QPaintEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void scrollContentsBy(int dx, int dy) override
virtual void showEvent(QShowEvent *event) override
virtual bool viewportEvent(QEvent *event) override
virtual void wheelEvent(QWheelEvent *event) override

보호된 슬롯

virtual void setupViewport(QWidget *widget) override

상세 설명

QGraphicsView는 QGraphicsScene 의 내용을 스크롤 가능한 뷰포트에 시각화합니다. 기하학적 항목으로 장면을 만들려면 QGraphicsScene 문서를 참조하십시오. QGraphicsView는 그래픽 뷰 프레임워크의 일부입니다.

장면을 시각화하려면 먼저 시각화하려는 장면의 주소를 QGraphicsView의 생성자에 전달하여 QGraphicsView 객체를 생성합니다. 또는 setScene()를 호출하여 나중에 장면을 설정할 수 있습니다. show ()를 호출하면 뷰는 기본적으로 장면의 중앙으로 스크롤하여 이 지점에 표시되는 모든 항목을 표시합니다. 예를 들어

QGraphicsScene scene;
scene.addText("Hello, world!");

QGraphicsView view(&scene);
view.show();

스크롤 막대를 사용하거나 centerOn()를 호출하여 장면의 원하는 위치로 명시적으로 스크롤할 수 있습니다. centerOn ()에 포인트를 전달하면 QGraphicsView는 뷰포트에서 뷰의 중앙에 포인트가 오도록 뷰포트를 스크롤합니다. QGraphicsItem 로 스크롤할 때 오버로드가 제공되며, 이 경우 QGraphicsView는 항목의 중앙이 뷰의 중앙에 있는지 확인합니다. 특정 영역만 표시하고 싶지만 반드시 중앙에 표시할 필요는 없는 경우 ensureVisible()를 대신 호출할 수 있습니다.

QGraphicsView는 전체 장면 또는 일부만 시각화하는 데 사용할 수 있습니다. 시각화된 영역은 기본적으로 뷰를 처음 표시할 때 QGraphicsScene::itemsBoundingRect() 호출을 통해 자동으로 감지됩니다. 시각화된 영역 사각형을 직접 설정하려면 setSceneRect()를 호출하면 됩니다. 이렇게 하면 스크롤 막대의 범위가 적절하게 조정됩니다. 씬은 사실상 무제한 크기를 지원하지만 스크롤 막대의 범위는 정수(INT_MIN, INT_MAX)의 범위를 초과하지 않는다는 점에 유의하세요.

QGraphicsView는 render()를 호출하여 장면을 시각화합니다. 기본적으로 항목은 일반 QPainter 을 사용하고 기본 렌더링 힌트를 사용하여 뷰포트에 그려집니다. 항목을 그릴 때 QGraphicsView가 QPainter 에 전달하는 기본 렌더링 힌트를 변경하려면 setRenderHints()을 호출하면 됩니다.

기본적으로 QGraphicsView는 뷰포트 위젯으로 일반 QWidget 을 제공합니다. viewport ()를 호출하여 이 위젯에 액세스하거나 setViewport()를 호출하여 이 위젯을 대체할 수 있습니다. OpenGL을 사용하여 렌더링하려면 setViewport(new QOpenGLWidget)를 호출하면 됩니다. QGraphicsView는 뷰포트 위젯의 소유권을 갖습니다.

QGraphicsView는 QTransform 을 사용하여 아핀 변환을 지원합니다. 행렬을 setTransform()에 전달하거나 rotate(), scale(), translate() 또는 shear() 중 하나의 편의 함수를 호출할 수 있습니다. 가장 일반적인 두 가지 변환은 확대/축소를 구현하는 데 사용되는 크기 조정과 회전입니다. QGraphicsView는 변환하는 동안 뷰의 중심을 고정합니다. 장면 정렬(setAlignment()) 때문에 뷰를 변환해도 시각적 영향이 없습니다.

마우스와 키보드를 사용하여 장면의 항목과 상호 작용할 수 있습니다. QGraphicsView는 마우스 및 키 이벤트를 장면 이벤트( QGraphicsSceneEvent, 를 상속하는 이벤트)로 변환하여 시각화된 장면으로 전달합니다. 결국 이벤트를 처리하고 이에 반응하는 것은 개별 항목입니다. 예를 들어 선택 가능한 항목을 클릭하면 일반적으로 해당 항목이 선택되었음을 씬에 알리고 선택 사각형을 표시하기 위해 스스로 다시 그려집니다. 마찬가지로 마우스를 클릭하고 드래그하여 이동 가능한 항목을 이동하면 해당 항목이 마우스 움직임을 처리하고 스스로 움직입니다. 항목 상호 작용은 기본적으로 활성화되어 있으며 setInteractive()를 호출하여 토글할 수 있습니다.

QGraphicsView의 서브클래스를 생성하고 마우스 및 키 이벤트 핸들러를 다시 구현하여 사용자 지정 장면 상호 작용을 제공할 수도 있습니다. 뷰의 항목과 프로그래밍 방식으로 상호 작용하는 방법을 단순화하기 위해 QGraphicsView는 매핑 함수 mapToScene() 및 mapFromScene()와 항목 접근자 items() 및 itemAt()를 제공합니다. 이러한 함수를 사용하면 뷰 좌표와 장면 좌표 간에 점, 직사각형, 다각형 및 경로를 매핑하고 뷰 좌표를 사용하여 장면에서 항목을 찾을 수 있습니다.

QOpenGLWidget 를 뷰포트로 사용하는 경우 스테레오스코픽 렌더링이 지원됩니다. 이는 QOpenGLWidget::paintGL 과 동일한 패턴을 사용하여 수행됩니다. 이를 활성화하려면 QSurfaceFormat::StereoBuffers 플래그를 활성화하세요. 플래그가 내부적으로 처리되는 방식 때문에 QSurfaceFormat::setDefaultFormat()를 사용하여 창을 만들기 전에 전역적으로 QSurfaceFormat::StereoBuffers 플래그를 설정하세요. 플래그가 활성화되어 있고 스테레오스코픽 렌더링에 대한 하드웨어 지원이 있는 경우 drawBackground() 및 drawForeground()가 매 프레임마다 두 번 트리거됩니다. QOpenGLWidget::currentTargetBuffer ()를 호출하여 현재 어느 버퍼에 그려지고 있는지 쿼리합니다.

참고: OpenGL 뷰포트를 사용하면 QGraphicsProxyWidget 을 사용할 수 있는 기능이 제한됩니다. 이러한 설정으로 모든 위젯과 스타일 조합을 지원할 수 있는 것은 아닙니다. UI를 신중하게 테스트하고 필요한 조정을 수행해야 합니다.

QGraphicsScene, QGraphicsItem, QGraphicsSceneEvent참조하세요 .

멤버 유형 문서

열거형 QGraphicsView::CacheModeFlag
플래그 QGraphicsView::CacheMode

이 열거형은 QGraphicsView 의 캐시 모드에 설정할 수 있는 플래그를 설명합니다.

Constant설명
QGraphicsView::CacheNone0x0모든 페인팅이 뷰포트에 직접 수행됩니다.
QGraphicsView::CacheBackground0x1배경이 캐시됩니다. 이는 사용자 정의 배경과 backgroundBrush 속성에 기반한 배경 모두에 영향을 줍니다. 이 플래그가 활성화되면 QGraphicsView 은 뷰포트의 전체 크기로 하나의 픽셀맵을 할당합니다.

CacheMode 유형은 QFlags<CacheModeFlag>에 대한 typedef입니다. 이 유형은 CacheModeFlag 값의 OR 조합을 저장합니다.

cacheMode참조하세요 .

enum QGraphicsView::DragMode

이 열거형은 뷰포트에서 마우스를 누르고 끌었을 때 뷰의 기본 동작을 설명합니다.

Constant설명
QGraphicsView::NoDrag0아무 일도 일어나지 않으며 마우스 이벤트가 무시됩니다.
QGraphicsView::ScrollHandDrag1커서가 가리키는 손으로 바뀌고 마우스를 드래그하면 스크롤바가 스크롤됩니다. 이 모드는 interactive 및 비대화형 모드에서 모두 작동합니다.
QGraphicsView::RubberBandDrag2고무줄이 나타납니다. 마우스를 드래그하면 고무줄 모양이 설정되고 고무줄로 덮인 모든 항목이 선택됩니다. 비대화형 보기에서는 이 모드가 비활성화됩니다.

dragModeQGraphicsScene::setSelectionArea()도 참조하십시오 .

열거형 QGraphicsView::OptimizationFlag
플래그 QGraphicsView::OptimizationFlags

이 열거형은 QGraphicsView 에서 렌더링 성능을 향상시키기 위해 활성화할 수 있는 플래그를 설명합니다. 기본적으로 이러한 플래그는 설정되어 있지 않습니다. 플래그를 설정하면 일반적으로 부작용이 발생하며 이 효과는 페인트 장치와 플랫폼에 따라 달라질 수 있습니다.

상수설명
QGraphicsView::DontSavePainterState0x1렌더링할 때 QGraphicsView 는 배경 또는 전경 렌더링 시와 각 항목 렌더링 시 페인터 상태( QPainter::save() 참조)를 보호합니다. 이를 통해 페인터를 변경된 상태로 둘 수 있습니다(즉, 페인팅 후 상태를 복원하지 않고 QPainter::setPen() 또는 QPainter::setBrush()를 호출할 수 있음). 그러나 항목이 지속적으로 상태를 복원하는 경우 이 플래그를 활성화하여 QGraphicsView 이 동일한 작업을 수행하지 못하도록 해야 합니다.
QGraphicsView::DontAdjustForAntialiasing0x2QGraphicsView 의 노출된 영역에 대한 앤티앨리어싱 자동 조정을 비활성화합니다. QGraphicsItem::boundingRect ()의 경계에 앤티앨리어싱 선을 렌더링하는 항목은 결국 선의 일부가 외부로 렌더링될 수 있습니다. 렌더링 아티팩트를 방지하기 위해 QGraphicsView 은 노출된 모든 영역을 모든 방향으로 2픽셀씩 확장합니다. 이 플래그를 활성화하면 QGraphicsView 에서 더 이상 이러한 조정을 수행하지 않으므로 다시 그려야 하는 영역이 최소화되어 성능이 향상됩니다. 일반적인 부작용은 앤티앨리어싱으로 그리는 항목이 움직일 때 씬에 그림 흔적을 남길 수 있다는 것입니다.
QGraphicsView::IndirectPainting0x4Qt 4.6부터는 QGraphicsView::drawItems() 및 QGraphicsScene::drawItems()를 호출하는 이전 페인팅 알고리즘을 복원합니다. 이전 코드와의 호환성을 위해서만 사용합니다.

OptimizationFlags 유형은 QFlags<OptimizationFlag>에 대한 typedef입니다. OptimizationFlag 값의 OR 조합을 저장합니다.

enum QGraphicsView::ViewportAnchor

이 열거형은 사용자가 뷰의 크기를 조정하거나 뷰가 변형될 때 QGraphicsView 사용할 수 있는 가능한 앵커를 설명합니다.

Constant설명
QGraphicsView::NoAnchor0앵커가 없습니다. 즉, 뷰가 장면의 위치를 변경하지 않습니다.
QGraphicsView::AnchorViewCenter1뷰의 중앙에 있는 장면 포인트가 앵커로 사용됩니다.
QGraphicsView::AnchorUnderMouse2마우스 아래 지점이 앵커로 사용됩니다.

resizeAnchortransformationAnchor참조하십시오 .

enum QGraphicsView::ViewportUpdateMode

이 열거형은 씬 콘텐츠가 변경되거나 노출될 때 QGraphicsView 뷰포트를 업데이트하는 방법을 설명합니다.

Constant설명
QGraphicsView::FullViewportUpdate0씬의 보이는 부분이 변경되거나 다시 노출되면 QGraphicsView 은 전체 뷰포트를 업데이트합니다. 이 방식은 QGraphicsView 이 그리는 데 소요되는 시간보다 무엇을 그릴지 파악하는 데 더 많은 시간을 소비하는 경우(예: 매우 많은 작은 항목이 반복적으로 업데이트되는 경우)에 가장 빠릅니다. QOpenGLWidget 와 같이 부분 업데이트를 지원하지 않는 뷰포트 및 스크롤 최적화를 비활성화해야 하는 뷰포트에 대해 기본 설정된 업데이트 모드입니다.
QGraphicsView::MinimalViewportUpdate1QGraphicsView 는 다시 그리기가 필요한 최소 뷰포트 영역을 결정하여 변경되지 않은 영역의 다시 그리기를 피함으로써 그리는 데 소요되는 시간을 최소화합니다. 이것이 QGraphicsView 의 기본 모드입니다. 이 접근 방식은 일반적으로 최상의 성능을 제공하지만 씬에 눈에 보이는 작은 변화가 많은 경우 QGraphicsView 은 그리는 데 소요되는 시간보다 최소한의 접근 방식을 찾는 데 더 많은 시간을 소비하게 될 수 있습니다.
QGraphicsView::SmartViewportUpdate2QGraphicsView 는 다시 그려야 하는 영역을 분석하여 최적의 업데이트 모드를 찾으려고 시도합니다.
QGraphicsView::BoundingRectViewportUpdate4뷰포트의 모든 변경 사항의 경계 사각형이 다시 그려집니다. 이 모드는 QGraphicsView 한 영역에서만 변경 사항을 검색하므로 다시 그려야 하는 부분을 결정하는 데 소요되는 시간을 최소화할 수 있다는 장점이 있습니다. 단점은 변경되지 않은 영역도 다시 그려야 한다는 것입니다.
QGraphicsView::NoViewportUpdate3QGraphicsView 는 장면이 변경되어도 뷰포트가 업데이트되지 않으며 사용자가 모든 업데이트를 제어해야 합니다. 이 모드는 QGraphicsView 에서 모든 (잠재적으로 느릴 수 있는) 항목 가시성 테스트를 비활성화하며, 고정 프레임 속도가 필요하거나 뷰포트가 외부에서 업데이트되는 장면에 적합합니다.

viewportUpdateMode참조하세요 .

속성 문서

alignment : Qt::Alignment

이 속성은 전체 장면이 표시되는 경우 뷰에서 장면의 정렬을 유지합니다.

뷰에 전체 장면이 표시되는 경우(즉, 스크롤 막대가 표시되지 않는 경우) 뷰의 맞춤에 따라 뷰에서 장면이 렌더링되는 위치가 결정됩니다. 예를 들어 정렬이 기본값인 Qt::AlignCenter 인 경우 뷰의 중앙에 장면이 렌더링되고 정렬이 (Qt::AlignLeft | Qt::AlignTop)인 경우 뷰의 왼쪽 위 모서리에 장면이 렌더링됩니다.

기능에 액세스합니다:

Qt::Alignment alignment() const
void setAlignment(Qt::Alignment alignment)

backgroundBrush : QBrush

이 속성은 장면의 배경 브러시를 보유합니다.

이 속성은 이 뷰에서 장면의 배경 브러시를 설정합니다. 장면의 자체 배경을 재정의하는 데 사용되며 drawBackground()의 동작을 정의합니다. 이 뷰에 사용자 지정 배경 그리기를 제공하려면 drawBackground() 대신 다시 구현할 수 있습니다.

기본적으로 이 속성에는 Qt::NoBrush 패턴의 브러시가 포함되어 있습니다.

함수에 액세스합니다:

QBrush backgroundBrush() const
void setBackgroundBrush(const QBrush &brush)

QGraphicsScene::backgroundBrushforegroundBrush참조하세요 .

cacheMode : CacheMode

이 속성은 뷰의 어느 부분이 캐시되는지 보관합니다.

QGraphicsView 는 미리 렌더링된 콘텐츠를 QPixmap 에 캐싱한 다음 뷰포트에 그릴 수 있습니다. 이러한 캐싱의 목적은 렌더링 속도가 느린 영역의 전체 렌더링 시간을 단축하는 것입니다. 예를 들어 텍스처, 그라데이션 및 알파 혼합 배경은 특히 변형된 뷰에서 렌더링 속도가 현저히 느릴 수 있습니다. CacheBackground 플래그를 사용하면 뷰의 배경을 캐싱할 수 있습니다. 예를 들어

QGraphicsView view;
view.setBackgroundBrush(QImage(":/images/backgroundtile.png"));
view.setCacheMode(QGraphicsView::CacheBackground);

뷰가 변형될 때마다 캐시가 무효화됩니다. 그러나 스크롤할 때는 부분 무효화만 필요합니다.

기본적으로 아무것도 캐시되지 않습니다.

액세스 함수:

QGraphicsView::CacheMode cacheMode() const
void setCacheMode(QGraphicsView::CacheMode mode)

resetCachedContent() 및 QPixmapCache참조하세요 .

dragMode : DragMode

이 프로퍼티는 마우스 왼쪽 버튼을 누른 상태에서 장면 위로 마우스를 드래그할 때의 동작을 유지합니다.

이 속성은 사용자가 장면 배경을 클릭하고 마우스를 드래그할 때(예: 포인팅 핸드 커서를 사용하여 뷰포트 콘텐츠를 스크롤하거나 고무줄로 여러 항목을 선택하는 경우) 어떤 일이 일어날지를 정의합니다. 기본값인 NoDrag 은 아무 작업도 수행하지 않습니다.

이 동작은 항목에서 처리되지 않는 마우스 클릭에만 영향을 줍니다. QGraphicsView 의 서브클래스를 만들고 mouseMoveEvent()를 다시 구현하여 사용자 지정 동작을 정의할 수 있습니다.

액세스 함수:

QGraphicsView::DragMode dragMode() const
void setDragMode(QGraphicsView::DragMode mode)

foregroundBrush : QBrush

이 속성은 장면의 전경 브러시를 보유합니다.

이 속성은 이 뷰에서 장면의 전경 브러시를 설정합니다. 장면의 자체 전경을 재정의하는 데 사용되며 drawForeground()의 동작을 정의합니다. 이 뷰에 대한 사용자 지정 전경화를 제공하려면 drawForeground() 대신 다시 구현하면 됩니다.

기본적으로 이 속성에는 Qt::NoBrush 패턴의 브러시가 포함되어 있습니다.

함수에 액세스합니다:

QBrush foregroundBrush() const
void setForegroundBrush(const QBrush &brush)

QGraphicsScene::foregroundBrushbackgroundBrush참조하세요 .

interactive : bool

이 속성은 뷰에서 장면 상호 작용을 허용할지 여부를 나타냅니다.

활성화되면 이 뷰는 장면 상호 작용을 허용하도록 설정됩니다. 그렇지 않으면 이 뷰는 상호 작용을 허용하지 않으며 마우스 또는 키 이벤트는 무시됩니다(즉, 읽기 전용 뷰로 작동합니다).

기본적으로 이 속성은 true 입니다.

액세스 함수:

bool isInteractive() const
void setInteractive(bool allowed)

optimizationFlags : OptimizationFlags

QGraphicsView의 성능을 조정하는 데 사용할 수 있는 플래그입니다.

QGraphicsView 는 클리핑, 추가 바운딩렉트 조정 및 기타 특정 보조 기능을 사용하여 일반적인 케이스 그래픽 씬의 렌더링 품질과 성능을 향상시킵니다. 그러나 대상 플랫폼, 장면 및 사용 중인 뷰포트에 따라 이러한 작업 중 일부는 성능이 저하될 수 있습니다.

효과는 플래그마다 다르며 자세한 내용은 OptimizationFlags 설명서를 참조하세요.

기본적으로 최적화 플래그는 활성화되지 않습니다.

액세스 함수:

QGraphicsView::OptimizationFlags optimizationFlags() const
void setOptimizationFlags(QGraphicsView::OptimizationFlags flags)

setOptimizationFlag()도 참조하세요 .

renderHints : QPainter::RenderHints

이 속성은 뷰에 대한 기본 렌더링 힌트를 보유합니다.

이 힌트는 보이는 각 항목이 그려지기 전에 QPainter 초기화하는 데 사용됩니다. QPainter 렌더링 힌트를 사용하여 앤티앨리어싱 및 부드러운 픽셀맵 변환과 같은 렌더링 기능을 전환합니다.

QPainter::TextAntialiasing 는 기본적으로 활성화됩니다.

예시:

QGraphicsScene scene;
scene.addRect(QRectF(-10, -10, 20, 20));

QGraphicsView view(&scene);
view.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
view.show();

함수 액세스:

QPainter::RenderHints renderHints() const
void setRenderHints(QPainter::RenderHints hints)

resizeAnchor : ViewportAnchor

뷰의 크기가 조정될 때 뷰가 장면을 배치하는 방법을 결정합니다.

QGraphicsView 는 이 속성을 사용하여 뷰포트 위젯의 크기가 변경될 때 뷰포트에서 장면을 배치하는 방법을 결정합니다. 기본 동작인 NoAnchor 은 크기를 조정하는 동안 장면의 위치를 변경하지 않고 뷰의 왼쪽 위 모서리가 고정된 것처럼 보입니다.

이 속성의 효과는 장면의 일부만 표시되는 경우(즉, 스크롤 막대가 있는 경우)에 눈에 띄게 나타납니다. 그렇지 않으면 전체 장면이 뷰에 맞는 경우 QGraphicsScene정렬을 사용하여 뷰에서 장면을 배치합니다.

기능에 액세스합니다:

QGraphicsView::ViewportAnchor resizeAnchor() const
void setResizeAnchor(QGraphicsView::ViewportAnchor anchor)

정렬transformationAnchor참조하십시오 .

rubberBandSelectionMode : Qt::ItemSelectionMode

이 속성은 고무줄 선택 직사각형으로 항목을 선택하는 동작을 유지합니다.

이 속성은 RubberBandDrag 드래그 모드를 사용할 때 항목이 선택되는 방식을 정의합니다.

기본값은 Qt::IntersectsItemShape 이며, 고무줄과 교차하거나 고무줄에 포함된 모양을 가진 모든 항목이 선택됩니다.

함수 액세스:

Qt::ItemSelectionMode rubberBandSelectionMode() const
void setRubberBandSelectionMode(Qt::ItemSelectionMode mode)

dragMode, items() 및 rubberBandRect()도 참조하세요 .

sceneRect : QRectF

이 속성은 이 뷰에서 시각화된 장면의 영역을 보유합니다.

장면 사각형은 장면의 범위를 정의하며, 뷰의 경우 스크롤 막대를 사용하여 탐색할 수 있는 장면의 영역을 의미합니다.

설정하지 않거나 null QRectF 이 설정된 경우 이 속성은 QGraphicsScene::sceneRect 과 동일한 값을 가지며 QGraphicsScene::sceneRect 로 변경됩니다. 그렇지 않으면 뷰의 씬 렉트는 씬의 영향을 받지 않습니다.

장면은 사실상 무제한 크기를 지원하지만 스크롤 막대의 범위는 정수(INT_MIN, INT_MAX)의 범위를 초과하지 않습니다. 장면이 스크롤 막대의 값보다 큰 경우 대신 translate()를 사용하여 장면을 탐색하도록 선택할 수 있습니다.

기본적으로 이 속성에는 원점에 너비와 높이가 0인 직사각형이 포함됩니다.

함수 액세스:

QRectF sceneRect() const
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)

QGraphicsScene::sceneRect참조하세요 .

transformationAnchor : ViewportAnchor

변환 중에 뷰가 장면을 배치하는 방법을 결정합니다.

QGraphicsView 는 이 속성을 사용하여 변환 행렬이 변경되고 뷰의 좌표계가 변환될 때 뷰포트에서 장면을 배치하는 방법을 결정합니다. 기본 동작인 AnchorViewCenter 은 뷰 중앙의 씬 포인트가 변환 중에 변경되지 않도록 합니다(예: 회전 시 씬이 뷰의 중앙을 중심으로 회전하는 것처럼 표시됨).

이 속성의 효과는 장면의 일부만 표시되는 경우(즉, 스크롤 막대가 있는 경우)에 눈에 띄게 나타납니다. 그렇지 않으면 전체 장면이 뷰에 맞는 경우 QGraphicsScene정렬을 사용하여 뷰에서 장면을 배치합니다.

기능에 액세스합니다:

QGraphicsView::ViewportAnchor transformationAnchor() const
void setTransformationAnchor(QGraphicsView::ViewportAnchor anchor)

정렬resizeAnchor참조하십시오 .

viewportUpdateMode : ViewportUpdateMode

뷰포트가 콘텐츠를 업데이트하는 방법을 결정합니다.

QGraphicsView 는 이 프로퍼티를 사용하여 노출이 변경되거나 변경된 씬의 영역을 업데이트하는 방법을 결정합니다. 일반적으로 이 프로퍼티를 수정할 필요는 없지만 수정하면 렌더링 성능을 향상시킬 수 있는 경우가 있습니다. 자세한 내용은 ViewportUpdateMode 문서를 참조하세요.

기본값은 MinimalViewportUpdate 이며, QGraphicsView 은 콘텐츠가 변경될 때 뷰포트의 가능한 한 작은 영역을 업데이트합니다.

액세스 함수:

QGraphicsView::ViewportUpdateMode viewportUpdateMode() const
void setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode)

ViewportUpdateModecacheMode참조하세요 .

멤버 함수 문서

QGraphicsView::QGraphicsView(QWidget *parent = nullptr)

QWidget 의 생성자에 parent 을 전달합니다.

QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)

시각화된 장면을 scene 로 설정하고 parentQWidget 의 생성자에 전달합니다.

[virtual noexcept] QGraphicsView::~QGraphicsView()

QGraphicsView 객체를 파괴합니다.

void QGraphicsView::centerOn(const QPointF &pos)

뷰포트의 내용을 스크롤하여 장면 좌표 pos, 뷰의 중앙에 위치하도록 합니다.

pos 은 부동 소수점 좌표이고 스크롤 막대는 정수 좌표에서 작동하므로 가운데 위치는 근사치일 뿐입니다.

참고: 항목이 테두리에 가깝거나 테두리 바깥쪽에 있는 경우 뷰에 표시되지만 가운데에 정렬되지는 않습니다.

ensureVisible()도 참조하십시오 .

void QGraphicsView::centerOn(const QGraphicsItem *item)

이 함수는 과부하된 함수입니다.

뷰포트의 콘텐츠를 스크롤하여 item 이 뷰의 중앙에 오도록 합니다.

ensureVisible()도 참조하십시오 .

void QGraphicsView::centerOn(qreal x, qreal y)

이 기능은 과부하가 걸린 기능입니다.

이 함수는 편의를 위해 제공됩니다. 센터온(QPointF(x, y))을 호출하는 것과 같습니다.

[override virtual protected] void QGraphicsView::contextMenuEvent(QContextMenuEvent *event)

다시 구현합니다: QAbstractScrollArea::contextMenuEvent(QContextMenuEvent *e).

[override virtual protected] void QGraphicsView::dragEnterEvent(QDragEnterEvent *event)

다시 구현합니다: QAbstractScrollArea::dragEnterEvent(QDragEnterEvent * 이벤트).

[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)

다시 구현합니다: QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent * 이벤트).

[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)

다시 구현합니다: QAbstractScrollArea::dragMoveEvent(QDragMoveEvent * 이벤트).

[virtual protected] void QGraphicsView::drawBackground(QPainter *painter, const QRectF &rect)

항목과 전경이 그려지기 전에 painter 을 사용하여 장면의 배경을 그립니다. 이 함수를 다시 구현하여 이 뷰에 사용자 지정 배경을 제공합니다.

배경의 색상, 텍스처 또는 그라데이션만 정의하려는 경우 setBackgroundBrush()를 대신 호출할 수 있습니다.

모든 페인팅은 장면 좌표에서 이루어집니다. rect 은 노출된 사각형입니다.

기본 구현은 뷰의 backgroundBrush 을 사용하여 rect 을 채웁니다. 이러한 브러시가 정의되지 않은 경우(기본값) 장면의 drawBackground() 함수가 대신 호출됩니다.

drawForeground() 및 QGraphicsScene::drawBackground()도 참조하십시오 .

[virtual protected] void QGraphicsView::drawForeground(QPainter *painter, const QRectF &rect)

배경과 모든 항목이 그려진 후 painter 를 사용하여 장면의 전경을 그립니다. 이 함수를 다시 구현하여 이 뷰에 대한 사용자 지정 전경을 제공합니다.

전경에 색상, 텍스처 또는 그라데이션만 정의하려는 경우 setForegroundBrush()를 대신 호출할 수 있습니다.

모든 페인팅은 장면 좌표에서 이루어집니다. rect 은 노출된 사각형입니다.

기본 구현은 뷰의 foregroundBrush 을 사용하여 rect 을 채웁니다. 이러한 브러시가 정의되어 있지 않은 경우(기본값) 장면의 drawForeground() 함수가 대신 호출됩니다.

drawBackground() 및 QGraphicsScene::drawForeground()도 참조하십시오 .

[override virtual protected] void QGraphicsView::dropEvent(QDropEvent *event)

다시 구현합니다: QAbstractScrollArea::dropEvent(QDropEvent * 이벤트).

void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)

뷰포트의 내용을 스크롤하여 장면 사각형 rect 이 보이도록 하고 여백을 픽셀 단위로 지정합니다( xmarginymargin). 지정된 사각형에 도달할 수 없는 경우 가장 가까운 유효한 위치로 내용을 스크롤합니다. 두 여백의 기본값은 50픽셀입니다.

centerOn()도 참조하세요 .

void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)

이 함수는 오버로드된 함수입니다.

항목 item 의 중앙이 보이도록 뷰포트의 콘텐츠를 스크롤하며 여백은 픽셀 단위로 지정된 xmarginymargin 로 지정합니다. 지정된 지점에 도달할 수 없는 경우 콘텐츠가 가장 가까운 유효한 위치로 스크롤됩니다. 두 여백의 기본값은 50픽셀입니다.

centerOn()도 참조하세요 .

void QGraphicsView::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)

이 기능은 과부하가 걸린 기능입니다.

이 함수는 편의를 위해 제공됩니다. 이는 ensureVisible(QRectF(x, y, w, h), xmargin, ymargin)을 호출하는 것과 동일합니다.

[override virtual protected] bool QGraphicsView::event(QEvent *event)

다시 구현합니다: QAbstractScrollArea::event(QEvent * 이벤트).

void QGraphicsView::fitInView(const QRectF &rect, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)

뷰 행렬의 크기를 조정하고 스크롤 막대를 스크롤하여 장면 사각형 rect 이 뷰포트 안에 맞도록 합니다. rect 은 장면 사각형 안에 있어야 하며, 그렇지 않으면 fitInView()는 전체 사각형이 표시되도록 보장할 수 없습니다.

이 함수는 뷰의 회전, 이동 또는 전단을 유지합니다. 뷰의 배율은 aspectRatioMode 에 따라 조정됩니다. rect 이 뷰에 꼭 맞지 않으면 뷰의 중앙에 배치됩니다.

일반적으로 resizeEvent()의 재구현 내부에서 fitInView()를 호출하여 뷰의 크기가 조정될 때 전체 장면 또는 장면의 일부가 뷰포트의 새 크기에 맞게 자동으로 조정되도록 하는 것이 일반적입니다. 하지만 새 변환이 스크롤바의 자동 상태를 전환하는 경우 resizeEvent() 내부에서 fitInView()를 호출하면 원치 않는 크기 조정 재귀가 발생할 수 있습니다. 이를 방지하기 위해 스크롤바 정책을 항상 켜짐 또는 항상 꺼짐으로 전환할 수 있습니다( horizontalScrollBarPolicy() 및 verticalScrollBarPolicy() 참조).

rect 이 비어 있거나 뷰포트가 너무 작으면 이 함수는 아무 작업도 수행하지 않습니다.

setTransform(), ensureVisible() 및 centerOn()도 참조하세요 .

void QGraphicsView::fitInView(const QGraphicsItem *item, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)

이 함수는 과부하된 함수입니다.

aspectRatioMode 에 따라 뷰의 크기를 조정하여 item 이 뷰 내부에 꼭 맞도록 합니다.

ensureVisible() 및 centerOn()도 참조하십시오 .

void QGraphicsView::fitInView(qreal x, qreal y, qreal w, qreal h, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio)

이 함수는 오버로드된 함수입니다.

이 편의 함수는 fitInView(QRectF(x, y, w, h), aspectRatioMode)를 호출하는 것과 동일합니다.

ensureVisible() 및 centerOn()도 참조하세요 .

[override virtual protected] void QGraphicsView::focusInEvent(QFocusEvent *event)

다시 구현합니다: QWidget::focusInEvent(QFocusEvent * 이벤트).

[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)

다시 구현합니다: QWidget::focusNextPrevChild(다음 부울).

[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)

다시 구현합니다: QWidget::focusOutEvent(QFocusEvent * 이벤트).

[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)

다시 구현합니다: QWidget::inputMethodEvent(Q입력메소드이벤트 *이벤트).

[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const

재구현합니다: QWidget::inputMethodQuery(Qt::InputMethodQuery 쿼리) const.

[slot] void QGraphicsView::invalidateScene(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = QGraphicsScene::AllLayers)

rect 안에 있는 layers 을 무효화하고 다시 그리기를 예약합니다. rect 은 씬 좌표에 있습니다. rect 안에 있는 layers 의 캐시된 콘텐츠는 무조건 무효화되고 다시 그려집니다.

이 함수를 호출하여 씬의 배경 또는 전경에 대한 변경 사항을 QGraphicsView 에 알릴 수 있습니다. 일반적으로 타일 기반 배경이 있는 씬에서 QGraphicsView 백그라운드 캐싱이 활성화된 경우 변경 사항을 알리기 위해 사용됩니다.

QGraphicsView 은 현재 백그라운드 캐싱만 지원합니다( QGraphicsView::CacheBackground 참조 ). 이 함수는 QGraphicsScene::BackgroundLayer 이외의 레이어가 전달되면 update()를 호출하는 것과 동일합니다.

QGraphicsScene::invalidate() 및 update()도 참조하세요 .

bool QGraphicsView::isTransformed() const

뷰가 변형된 경우(즉, 비아이덴티티 변환이 할당되었거나 스크롤 막대가 조정된 경우) true 을 반환합니다.

setTransform(), horizontalScrollBar() 및 verticalScrollBar()도 참조하십시오 .

QGraphicsItem *QGraphicsView::itemAt(const QPoint &pos) const

뷰포트 좌표의 pos 위치에 있는 항목을 반환합니다. 이 위치에 여러 항목이 있는 경우 이 함수는 맨 위에 있는 항목을 반환합니다.

예시:

void CustomView::mousePressEvent(QMouseEvent *event) { if (QGraphicsItem *item = itemAt(event->pos())) {        qDebug() << "You clicked on item" << item;
    } else {        qDebug("You didn't click on an item.");
    } }

items() 및 Sorting도 참조하세요 .

QGraphicsItem *QGraphicsView::itemAt(int x, int y) const

이 기능은 과부하가 걸린 기능입니다.

이 함수는 편의를 위해 제공됩니다. itemAt(QPoint(x, y))을 호출하는 것과 동일합니다.

QList<QGraphicsItem *> QGraphicsView::items() const

연결된 장면의 모든 항목 목록을 내림차순으로 반환합니다(즉, 반환된 목록의 첫 번째 항목이 맨 위에 있는 항목).

QGraphicsScene::items() 및 Sorting참조하세요 .

QList<QGraphicsItem *> QGraphicsView::items(const QPoint &pos) const

뷰에서 pos 위치에 있는 모든 항목의 목록을 반환합니다. 항목은 내림차순으로 나열됩니다(즉, 목록의 첫 번째 항목이 가장 위쪽 항목이고 마지막 항목이 가장 아래쪽 항목입니다). pos 은 뷰포트 좌표입니다.

이 함수는 QGraphicsView 의 서브클래스에 있는 마우스 이벤트 핸들러 내에서 가장 일반적으로 호출됩니다. pos 은 QMouseEvent::pos()와 마찬가지로 변환되지 않은 뷰포트 좌표로 되어 있습니다.

void CustomView::mousePressEvent(QMouseEvent *event){
    qDebug() << "There are" << items(event->pos()).size()
            << "items at position"<< mapToScene(event->pos()); }

QGraphicsScene::items() 및 Sorting참조하세요 .

QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const

이 함수는 편의를 위해 제공됩니다. item(QPoint(x, y))을 호출하는 것과 같습니다.

QList<QGraphicsItem *> QGraphicsView::items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

이 편의 함수는 item(QRectF(x, y, w, h), mode)을 호출하는 것과 동일합니다.

QList<QGraphicsItem *> QGraphicsView::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

이 함수는 오버로드된 함수입니다.

mode 에 따라 path 에 포함되거나 과 교차하는 모든 항목의 목록을 반환합니다. path 은 뷰포트 좌표입니다.

mode 의 기본값은 Qt::IntersectsItemShape 이며, 정확한 모양이 path 과 교차하거나 에 포함된 모든 항목이 반환됩니다.

itemAt(), items(), mapToScene() 및 Sorting도 참조하십시오 .

QList<QGraphicsItem *> QGraphicsView::items(const QPolygon &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

이 함수는 오버로드된 함수입니다.

mode 에 따라 polygon 에 포함되거나 과 교차하는 모든 항목의 목록을 반환합니다. polygon 은 뷰포트 좌표입니다.

mode 의 기본값은 Qt::IntersectsItemShape 이며, 정확한 모양이 polygon 과 교차하거나 에 포함된 모든 항목이 반환됩니다.

항목은 내림차순으로 정렬됩니다(즉, 반환된 목록의 첫 번째 항목이 가장 위쪽 항목이 됩니다).

itemAt(), items(), mapToScene() 및 Sorting참조하세요 .

QList<QGraphicsItem *> QGraphicsView::items(const QRect &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

이 함수는 오버로드된 함수입니다.

mode 에 따라 rect 에 포함되거나 과 교차하는 모든 항목의 목록을 반환합니다. rect 은 뷰포트 좌표입니다.

mode 의 기본값은 Qt::IntersectsItemShape 이며, 정확한 모양이 rect 과 교차하거나 에 포함된 모든 항목이 반환됩니다.

항목은 내림차순으로 정렬됩니다(즉, 반환된 목록의 첫 번째 항목이 가장 위쪽 항목이 됩니다).

itemAt(), items(), mapToScene() 및 Sorting참조하세요 .

[override virtual protected] void QGraphicsView::keyPressEvent(QKeyEvent *event)

다시 구현합니다: QAbstractScrollArea::keyPressEvent(QKeyEvent *e).

[override virtual protected] void QGraphicsView::keyReleaseEvent(QKeyEvent *event)

다시 구현합니다: QWidget::keyReleaseEvent(QKeyEvent * 이벤트).

QPainterPath QGraphicsView::mapFromScene(const QPainterPath &path) const

장면 좌표 페인터 경로 path 를 뷰포트 좌표 페인터 경로로 반환합니다.

mapToScene()도 참조하십시오 .

QPoint QGraphicsView::mapFromScene(const QPointF &point) const

장면 좌표 point 를 뷰포트 좌표로 반환합니다.

mapToScene()도 참조하세요 .

QPolygon QGraphicsView::mapFromScene(const QPolygonF &polygon) const

씬 좌표 다각형 polygon 을 뷰포트 좌표 다각형으로 반환합니다.

mapToScene()도 참조하십시오 .

QPolygon QGraphicsView::mapFromScene(const QRectF &rect) const

씬 사각형 rect 을 뷰포트 좌표 다각형으로 반환합니다.

mapToScene()도 참조하십시오 .

QPoint QGraphicsView::mapFromScene(qreal x, qreal y) const

이 함수는 편의를 위해 제공됩니다. mapFromScene(QPointF(x, y))을 호출하는 것과 동일합니다.

QPolygon QGraphicsView::mapFromScene(qreal x, qreal y, qreal w, qreal h) const

이 함수는 편의를 위해 제공됩니다. mapFromScene(QRectF(x, y, w, h))을 호출하는 것과 동일합니다.

QPainterPath QGraphicsView::mapToScene(const QPainterPath &path) const

장면 좌표 페인터 경로에 매핑된 뷰포트 페인터 경로 path 를 반환합니다.

mapFromScene()도 참조하십시오 .

QPointF QGraphicsView::mapToScene(const QPoint &point) const

장면 좌표에 매핑된 뷰포트 좌표 point 를 반환합니다.

참고: 포인트 자체 대신 point 에서 해당 픽셀이 포함된 전체 직사각형을 매핑하는 것이 유용할 수 있습니다. 이렇게 하려면 mapToScene(QRect(point, QSize(2, 2)))을 호출하면 됩니다.

mapFromScene()도 참조하세요 .

QPolygonF QGraphicsView::mapToScene(const QPolygon &polygon) const

장면 좌표 다각형에 매핑된 뷰포트 다각형 polygon 을 반환합니다.

mapFromScene()도 참조하십시오 .

QPolygonF QGraphicsView::mapToScene(const QRect &rect) const

장면 좌표 다각형에 매핑된 뷰포트 사각형 rect 을 반환합니다.

mapFromScene()도 참조하십시오 .

QPointF QGraphicsView::mapToScene(int x, int y) const

이 함수는 편의를 위해 제공됩니다. mapToScene(QPoint(x, y))을 호출하는 것과 동일합니다.

QPolygonF QGraphicsView::mapToScene(int x, int y, int w, int h) const

이 함수는 편의를 위해 제공됩니다. mapToScene(QRect(x, y, w, h))을 호출하는 것과 동일합니다.

[override virtual protected] void QGraphicsView::mouseDoubleClickEvent(QMouseEvent *event)

다시 구현합니다: QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e).

[override virtual protected] void QGraphicsView::mouseMoveEvent(QMouseEvent *event)

다시 구현합니다: QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e).

[override virtual protected] void QGraphicsView::mousePressEvent(QMouseEvent *event)

다시 구현합니다: QAbstractScrollArea::mousePressEvent(QMouseEvent *e).

[override virtual protected] void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)

다시 구현합니다: QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e).

[override virtual protected] void QGraphicsView::paintEvent(QPaintEvent *event)

다시 구현합니다: QAbstractScrollArea::paintEvent(QPaintEvent * 이벤트).

void QGraphicsView::render(QPainter *painter, const QRectF &target = QRectF(), const QRect &source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)

뷰 좌표에 있는 source 직사각형을 painter 을 사용하여 씬에서 페인트 장치 좌표에 있는 target 으로 렌더링합니다. 이 기능은 뷰의 내용을 QImage 와 같은 페인트 장치로 캡처하거나(예: 스크린샷을 찍기 위해) QPrinter로 인쇄할 때 유용합니다. 예를 들어

QGraphicsScene scene;
scene.addItem(...
...

QGraphicsView view(&scene);
view.show();
...

QPrinter printer(QPrinter::HighResolution);
printer.setPageSize(QPrinter::A4);
QPainter painter(&printer);

// print, fitting the viewport contents into a full page
view.render(&painter);

// print the upper half of the viewport into the lower.
// half of the page.
QRect viewport = view.viewport()->rect();
view.render(&painter,
            QRectF(0, printer.height() / 2,
                   printer.width(), printer.height() / 2),
            viewport.adjusted(0, 0, 0, -viewport.height() / 2));

source 이 널 직사각형인 경우 이 함수는 viewport()->rect()를 사용하여 그릴 내용을 결정합니다. target 가 널 직사각형인 경우 painter 의 페인트 장치의 전체 크기(예: QPrinter의 경우 페이지 크기)가 사용됩니다.

소스 사각형 콘텐츠는 aspectRatioMode 에 따라 대상 사각형에 맞게 변형됩니다. 기본적으로 가로 세로 비율은 유지되며 sourcetarget 에 맞게 크기가 조정됩니다.

QGraphicsScene::render()도 참조하세요 .

void QGraphicsView::resetCachedContent()

캐시된 콘텐츠를 초기화합니다. 이 함수를 호출하면 QGraphicsView 의 캐시가 지워집니다. 현재 캐시 모드가 CacheNone 인 경우 이 함수는 아무 작업도 수행하지 않습니다.

이 함수는 backgroundBrush 또는 QGraphicsScene::backgroundBrush 속성이 변경되면 자동으로 호출되며, 사용자 정의 배경을 그리기 위해 QGraphicsScene::drawBackground() 또는 QGraphicsView::drawBackground()을 다시 구현하고 전체 다시 그리기를 트리거해야 하는 경우에만 이 함수를 호출하면 됩니다.

cacheMode()도 참조하세요 .

void QGraphicsView::resetTransform()

뷰 변환을 ID 행렬로 재설정합니다.

transform() 및 setTransform()도 참조하세요 .

[override virtual protected] void QGraphicsView::resizeEvent(QResizeEvent *event)

다시 구현합니다: QAbstractScrollArea::resizeEvent(QResizeEvent * 이벤트).

void QGraphicsView::rotate(qreal angle)

현재 보기 변환 angle 을 시계 방향으로 회전합니다.

setTransform(), transform(), scale(), shear() 및 translate()도 참조하세요 .

[signal] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)

이 신호는 고무줄 직사각형이 변경될 때 방출됩니다. 뷰포트 직사각형은 rubberBandRect 로 지정됩니다. 드래그 시작 위치와 드래그 끝 위치는 fromScenePointtoScenePoint 로 장면 포인트에 제공됩니다.

고무줄 선택이 끝나면 이 신호는 null 값으로 방출됩니다.

rubberBandRect()도 참조하십시오 .

QRect QGraphicsView::rubberBandRect() const

이 함수는 사용자가 현재 고무줄로 항목 선택을 하고 있는 경우 현재 고무줄 영역(뷰포트 좌표)을 반환합니다. 사용자가 고무줄을 사용하지 않는 경우 이 함수는 (널) QRectF()를 반환합니다.

QRect 의 일부는 시각적 뷰포트 외부에 있을 수 있습니다. 예를 들어 음수 값을 포함할 수 있습니다.

rubberBandSelectionModerubberBandChanged()도 참조하세요 .

void QGraphicsView::scale(qreal sx, qreal sy)

현재 뷰 변환의 배율을 (sx, sy)로 조정합니다.

setTransform(), transform(), rotate(), shear() 및 translate()도 참조하십시오 .

QGraphicsScene *QGraphicsView::scene() const

현재 뷰에 시각화된 장면에 대한 포인터를 반환합니다. 현재 시각화된 장면이 없는 경우 nullptr 이 반환됩니다.

setScene()도 참조하십시오 .

[override virtual protected] void QGraphicsView::scrollContentsBy(int dx, int dy)

재구현합니다: QAbstractScrollArea::scrollContentsBy(int dx, int dy).

void QGraphicsView::setOptimizationFlag(QGraphicsView::OptimizationFlag flag, bool enabled = true)

enabled 이 참이면 flag 을 활성화하고, 그렇지 않으면 flag 을 비활성화합니다.

optimizationFlags도 참조하세요 .

void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)

enabled 이 참이면 렌더링 힌트 hint 가 활성화되고, 그렇지 않으면 비활성화됩니다.

renderHints참조하세요 .

void QGraphicsView::setScene(QGraphicsScene *scene)

현재 장면을 scene 으로 설정합니다. scene 을 이미 보고 있는 경우 이 함수는 아무 작업도 수행하지 않습니다.

뷰에 장면이 설정되면 QGraphicsScene::changed() 신호가 이 뷰의 updateScene() 슬롯에 자동으로 연결되고 뷰의 스크롤 막대가 장면의 크기에 맞게 조정됩니다.

뷰는 scene 의 소유권을 갖지 않습니다.

scene()도 참조하십시오 .

void QGraphicsView::setTransform(const QTransform &matrix, bool combine = false)

뷰의 현재 변환 행렬을 matrix 로 설정합니다.

combine 이 참이면 matrix 이 현재 행렬과 결합되고, 그렇지 않으면 matrix 이 현재 행렬을 대체합니다. combine 은 기본적으로 거짓입니다.

변환 행렬은 장면을 뷰 좌표로 변환합니다. 동일성 행렬에서 제공하는 기본 변환을 사용하면 뷰의 픽셀 하나가 장면의 한 단위를 나타냅니다(예: 뷰에서 10x10 직사각형 항목은 10x10 픽셀을 사용하여 그려집니다). 2x2 배율 행렬을 적용하면 장면이 1:2로 그려집니다(예: 10x10 직사각형 항목은 뷰에서 20x20 픽셀을 사용하여 그려집니다).

예제:

QGraphicsScene scene;
scene.addText("GraphicsView rotated clockwise");

QGraphicsView view(&scene);
view.rotate(90); // the text is rendered with a 90 degree clockwise rotation
view.show();

변형된 뷰를 사용하여 항목과의 상호 작용을 단순화하기 위해 QGraphicsView 에서는 장면과 뷰 좌표 간에 변환할 수 있는 mapTo... 및 mapFrom... 함수를 제공합니다. 예를 들어 mapToScene()를 호출하여 뷰 좌표를 부동 소수점 장면 좌표로 매핑하거나 mapFromScene()를 호출하여 부동 소수점 장면 좌표에서 뷰 좌표로 매핑할 수 있습니다.

transform(), resetTransform(), rotate(), scale(), shear() 및 translate()도 참조하십시오 .

[override virtual protected slot] void QGraphicsView::setupViewport(QWidget *widget)

다시 구현합니다: QAbstractScrollArea::setupViewport(QWidget *뷰포트).

이 슬롯은 setViewport()이 호출된 후 QAbstractScrollArea 에 의해 호출됩니다. 이 함수를 QGraphicsView 의 서브클래스에서 다시 구현하여 새 뷰포트 widget 를 사용하기 전에 초기화하세요.

setViewport()도 참조하세요 .

void QGraphicsView::shear(qreal sh, qreal sv)

현재 뷰 변환을 (sh, sv).

setTransform(), transform(), rotate(), scale() 및 translate()도 참조하십시오 .

[override virtual protected] void QGraphicsView::showEvent(QShowEvent *event)

다시 구현합니다: QWidget::showEvent(QShowEvent * 이벤트).

[override virtual] QSize QGraphicsView::sizeHint() const

재구현합니다: QAbstractScrollArea::sizeHint() const.

QTransform QGraphicsView::transform() const

뷰의 현재 변환 행렬을 반환합니다. 현재 변환이 설정되어 있지 않으면 ID 행렬이 반환됩니다.

setTransform(), rotate(), scale(), shear() 및 translate()도 참조하십시오 .

void QGraphicsView::translate(qreal dx, qreal dy)

현재 뷰 변환을 (dx, dy)로 변환합니다.

setTransform(), transform(), rotate() 및 shear()도 참조하세요 .

[slot] void QGraphicsView::updateScene(const QList<QRectF> &rects)

씬 사각형의 업데이트를 예약합니다 rects.

QGraphicsScene::changed()도 참조하세요 .

[slot] void QGraphicsView::updateSceneRect(const QRectF &rect)

QGraphicsView 에 씬의 씬 렉트가 변경되었음을 알립니다. rect 은 새 씬 렉트입니다. 뷰에 이미 명시적으로 설정된 장면 rect가 있는 경우 이 함수는 아무 작업도 수행하지 않습니다.

sceneRectQGraphicsScene::sceneRectChanged()도 참조하십시오 .

[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)

다시 구현합니다: QAbstractScrollArea::viewportEvent(QEvent * 이벤트).

QTransform QGraphicsView::viewportTransform() const

장면 좌표를 뷰포트 좌표에 매핑하는 행렬을 반환합니다.

mapToScene() 및 mapFromScene()도 참조하십시오 .

[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)

다시 구현합니다: QAbstractScrollArea::wheelEvent(QWheelEvent *e).

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.