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는 그래픽 뷰 프레임워크(Graphics View Framework)의 일부입니다.
씬을 시각화하려면, 먼저 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도 참조하십시오 .
멤버 유형 문서
enum QGraphicsView::CacheModeFlag
flags QGraphicsView::CacheMode
이 열거형은 ` QGraphicsView`의 캐시 모드에 설정할 수 있는 플래그를 설명합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsView::CacheNone | 0x0 | 모든 그리기 작업이 뷰포트에 직접 수행됩니다. |
QGraphicsView::CacheBackground | 0x1 | 배경이 캐시됩니다. 이는 사용자 정의 배경과 backgroundBrush 속성을 기반으로 하는 배경 모두에 영향을 미칩니다. 이 플래그가 활성화되면 QGraphicsView 는 뷰포트의 전체 크기를 가진 픽스맵 하나를 할당합니다. |
CacheMode 유형은 QFlags<CacheModeFlag>에 대한 typedef입니다. 이 유형은 CacheModeFlag 값들의 OR 조합을 저장합니다.
cacheMode도 참조하십시오 .
enum QGraphicsView::DragMode
이 열거형은 뷰포트 위에서 마우스를 누른 채 드래그할 때 뷰의 기본 동작을 정의합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsView::NoDrag | 0 | 아무 일도 일어나지 않으며, 마우스 이벤트가 무시됩니다. |
QGraphicsView::ScrollHandDrag | 1 | 커서가 가리키는 손 모양으로 바뀌고, 마우스를 드래그하면 스크롤바가 스크롤됩니다. 이 모드는 대화형( interactive ) 및 비대화형 모드 모두에서 작동합니다. |
QGraphicsView::RubberBandDrag | 2 | 고무줄이 나타납니다. 마우스를 드래그하면 고무줄의 크기가 조정되며, 고무줄로 덮인 모든 항목이 선택됩니다. 이 모드는 비대화형 뷰에서는 비활성화됩니다. |
dragMode 및 QGraphicsScene::setSelectionArea()도 참조하십시오 .
enum QGraphicsView::OptimizationFlag
flags QGraphicsView::OptimizationFlags
이 열거형은 ` QGraphicsView`에서 렌더링 성능을 향상시키기 위해 활성화할 수 있는 플래그를 설명합니다. 기본적으로 이러한 플래그는 하나도 설정되어 있지 않습니다. 플래그를 설정하면 대개 부수적인 효과가 발생하며, 이 효과는 페인트 장치와 플랫폼에 따라 달라질 수 있다는 점에 유의하십시오.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsView::DontSavePainterState | 0x1 | 렌더링 시, ` QGraphicsView `는 배경이나 전경을 렌더링할 때, 그리고 각 항목을 렌더링할 때 페인터 상태를 보호합니다( QPainter::save() 참조). 이를 통해 페인터를 변경된 상태로 유지할 수 있습니다(즉, 페인팅 후 상태를 복원하지 않고 ` QPainter::setPen()` 또는 ` QPainter::setBrush()`를 호출할 수 있습니다). 그러나 항목들이 일관되게 상태를 복원하는 경우, QGraphicsView 가 동일한 작업을 수행하지 못하도록 이 플래그를 활성화해야 합니다. |
QGraphicsView::DontAdjustForAntialiasing | 0x2 | QGraphicsView 의 노출 영역에 대한 앤티앨리어싱 자동 조정을 비활성화합니다. QGraphicsItem::boundingRect()의 경계에 앤티앨리어싱된 선을 렌더링하는 항목은 선의 일부가 경계 밖으로 렌더링될 수 있습니다. 렌더링 아티팩트를 방지하기 위해 QGraphicsView 는 모든 노출 영역을 모든 방향으로 2픽셀씩 확장합니다. 이 플래그를 활성화하면 QGraphicsView 은 더 이상 이러한 조정을 수행하지 않으므로, 다시 그려야 하는 영역이 최소화되어 성능이 향상됩니다. 일반적인 부작용으로, 앤티앨리어싱을 사용하여 그리는 항목은 이동할 때 씬에 그리기 흔적이 남을 수 있습니다. |
QGraphicsView::IndirectPainting | 0x4 | Qt 4.6부터는 QGraphicsView::drawItems() 및 QGraphicsScene::drawItems()를 호출하는 기존 그리기 알고리즘을 복원합니다. 구형 코드와의 호환성을 위해서만 사용해야 합니다. |
OptimizationFlags 유형은 QFlags<OptimizationFlag>에 대한 typedef입니다. 이 유형은 OptimizationFlag 값들의 OR 조합을 저장합니다.
enum QGraphicsView::ViewportAnchor
이 열거형은 사용자가 뷰의 크기를 조정하거나 뷰가 변형될 때 QGraphicsView 가 사용할 수 있는 앵커를 설명합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsView::NoAnchor | 0 | 앵커 없음, 즉 뷰가 씬의 위치를 변경하지 않습니다. |
QGraphicsView::AnchorViewCenter | 1 | 뷰의 중심에 있는 씬 포인트가 앵커로 사용됩니다. |
QGraphicsView::AnchorUnderMouse | 2 | 마우스 커서가 위치한 점이 앵커로 사용됩니다. |
resizeAnchor 및 transformationAnchor도 참조하십시오 .
enum QGraphicsView::ViewportUpdateMode
이 열거형은 QGraphicsView 가 씬의 내용이 변경되거나 노출될 때 뷰포트를 어떻게 업데이트하는지를 설명합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsView::FullViewportUpdate | 0 | 씬의 보이는 부분이 변경되거나 다시 노출되면, ` QGraphicsView `는 뷰포트 전체를 업데이트합니다. 이 방식은 ` QGraphicsView `가 렌더링하는 데 소요되는 시간보다 무엇을 렌더링할지 파악하는 데 더 많은 시간을 소비할 때(예: 아주 많은 작은 항목이 반복적으로 업데이트될 때) 가장 빠릅니다. 이는 ` QOpenGLWidget`와 같이 부분 업데이트를 지원하지 않는 뷰포트나, 스크롤 최적화를 비활성화해야 하는 뷰포트에 권장되는 업데이트 모드입니다. |
QGraphicsView::MinimalViewportUpdate | 1 | QGraphicsView 는 다시 그리기가 필요한 최소 뷰포트 영역을 파악하여, 변경되지 않은 영역의 다시 그리기를 피함으로써 그리기에 소요되는 시간을 최소화합니다. 이는 QGraphicsView 의 기본 모드입니다. 이 방식은 일반적으로 최고의 성능을 제공하지만, 씬에 눈에 띄는 작은 변경 사항이 많을 경우, QGraphicsView 가 그리기에 소요되는 시간보다 최소 영역을 찾는 데 더 많은 시간을 소비하게 될 수도 있습니다. |
QGraphicsView::SmartViewportUpdate | 2 | QGraphicsView 재그리기 필요한 영역을 분석하여 최적의 업데이트 모드를 찾으려고 시도합니다. |
QGraphicsView::BoundingRectViewportUpdate | 4 | 뷰포트 내 모든 변경 사항의 경계 사각형이 다시 그려집니다. 이 모드의 장점은 QGraphicsView 가 변경 사항을 찾기 위해 단 하나의 영역만 검색하므로, 재그리기 대상 결정에 소요되는 시간을 최소화할 수 있다는 점입니다. 단점은 변경되지 않은 영역도 다시 그려야 한다는 것입니다. |
QGraphicsView::NoViewportUpdate | 3 | QGraphicsView 장면이 변경되어도 뷰포트를 절대 업데이트하지 않으며, 사용자가 모든 업데이트를 직접 제어해야 합니다. 이 모드는 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::backgroundBrush 및 foregroundBrush도 참조하십시오 .
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::foregroundBrush 및 backgroundBrush도 참조하십시오 .
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) |
alignment 및 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) |
alignment 및 resizeAnchor도 참조하십시오 .
viewportUpdateMode : ViewportUpdateMode
뷰포트의 내용이 어떻게 업데이트되어야 하는지 지정합니다.
QGraphicsView 이 속성을 사용하여 다시 노출되거나 변경된 씬 영역을 어떻게 업데이트할지 결정합니다. 일반적으로 이 속성을 수정할 필요는 없지만, 수정함으로써 렌더링 성능을 향상시킬 수 있는 경우도 있습니다. 구체적인 내용은 ViewportUpdateMode 문서를 참조하십시오.
기본값은 ` MinimalViewportUpdate`이며, ` QGraphicsView `을 설정하면 콘텐츠가 변경될 때 뷰포트의 가능한 한 작은 영역만 업데이트됩니다.
액세스 함수:
| QGraphicsView::ViewportUpdateMode | viewportUpdateMode() const |
| void | setViewportUpdateMode(QGraphicsView::ViewportUpdateMode mode) |
ViewportUpdateMode 및 cacheMode도 참조하십시오 .
멤버 함수 문서
QGraphicsView::QGraphicsView(QWidget *parent = nullptr)
QGraphicsView를 생성합니다. ` parent `는 ` QWidget`의 생성자에 전달됩니다.
QGraphicsView::QGraphicsView(QGraphicsScene *scene, QWidget *parent = nullptr)
QGraphicsView를 생성하고, 시각화될 장면을 ` scene`로 설정합니다. ` parent `는 ` QWidget`의 생성자에 전달됩니다.
[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)
이 함수는 편의상 제공되는 것입니다. 이는 centerOn(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 *event)를 재구현합니다.
[override virtual protected] void QGraphicsView::dragLeaveEvent(QDragLeaveEvent *event)
QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event)를 재구현합니다.
[override virtual protected] void QGraphicsView::dragMoveEvent(QDragMoveEvent *event)
QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event)을 재구현합니다.
[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 *event)를 재구현합니다.
void QGraphicsView::ensureVisible(const QRectF &rect, int xmargin = 50, int ymargin = 50)
뷰포트의 내용을 스크롤하여 rect 에 지정된 장면 사각형이 보이도록 하며, 여백은 xmargin 및 ymargin 에서 픽셀 단위로 지정됩니다. 지정된 사각형 영역에 도달할 수 없는 경우, 내용은 가장 가까운 유효한 위치로 스크롤됩니다. 두 여백의 기본값은 모두 50픽셀입니다.
centerOn()도 참조하십시오 .
void QGraphicsView::ensureVisible(const QGraphicsItem *item, int xmargin = 50, int ymargin = 50)
item 항목의 중심이 보이도록 뷰포트의 내용을 스크롤하며, xmargin 및 ymargin 에서 픽셀 단위로 지정된 여백을 적용합니다. 지정된 지점에 도달할 수 없는 경우, 내용은 가장 가까운 유효한 위치로 스크롤됩니다. 두 여백의 기본값은 모두 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 *event)를 재구현합니다.
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)
item 가 뷰 내부에 꼭 맞게 배치되도록 보장하며, aspectRatioMode 에 따라 뷰의 크기를 조정합니다.
이 함수는 오버로드된 함수입니다.
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 *event)를 재구현합니다.
[override virtual protected] bool QGraphicsView::focusNextPrevChild(bool next)
QWidget::focusNextPrevChild(bool next)를 재구현합니다.
[override virtual protected] void QGraphicsView::focusOutEvent(QFocusEvent *event)
QWidget::focusOutEvent(QFocusEvent *event)을 재구현합니다.
[override virtual protected] void QGraphicsView::inputMethodEvent(QInputMethodEvent *event)
QWidget::inputMethodEvent(QInputMethodEvent *event)를 재구현합니다.
[override virtual] QVariant QGraphicsView::inputMethodQuery(Qt::InputMethodQuery query) const
QWidget::inputMethodQuery(const Qt::InputMethodQuery query)를 재구현합니다.
[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.");
}
}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::position()과 마찬가지로 변환되지 않은 뷰포트 좌표계로 표시됩니다.
void CustomView::mousePressEvent(QMouseEvent*event)
{
qDebug() << "There are" << items(event->pos()).size()
<< "위치에 있는 아이템" << mapToScene(event->pos());
}QGraphicsScene::items() 및 Sorting도 참조하십시오 .
QList<QGraphicsItem *> QGraphicsView::items(int x, int y) const
이 함수는 편의상 제공됩니다. 이는 items(QPoint(x, y))를 호출하는 것과 동일합니다.
QList<QGraphicsItem *> QGraphicsView::items(int x, int y, int w, int h, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
이 편의 함수는 items(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 *event)를 재구현합니다.
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(QRectpoint , 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 *event)를 재구현합니다.
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(someItem);
//...
QGraphicsView view(&scene);
view.show();
//...
QPrinter printer(QPrinter::HighResolution);
printer.setDocName("Example");
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 가 null rect인 경우, 이 함수는 viewport()->rect()를 사용하여 그릴 내용을 결정합니다. target 가 null rect인 경우, painter 의 페인트 장치 전체 크기(예: QPrinter의 경우 페이지 크기)가 사용됩니다.
소스 사각형의 내용은 aspectRatioMode 에 따라 변환되어 대상 사각형에 맞도록 조정됩니다. 기본적으로 종횡비는 유지되며, source 는 target 에 맞도록 크기가 조정됩니다.
QGraphicsScene::render()도 참조하십시오 .
void QGraphicsView::resetCachedContent()
캐시된 콘텐츠를 모두 초기화합니다. 이 함수를 호출하면 QGraphicsView 의 캐시가 지워집니다. 현재 캐시 모드가 CacheNone 인 경우, 이 함수는 아무 작업도 수행하지 않습니다.
이 함수는 backgroundBrush 또는 QGraphicsScene::backgroundBrush 속성이 변경될 때 자동으로 호출됩니다. 사용자 정의 배경을 그리기 위해 QGraphicsScene::drawBackground() 또는 QGraphicsView::drawBackground()을 재구현했고, 전체 다시 그리기를 트리거해야 하는 경우에만 이 함수를 호출하면 됩니다.
cacheMode()도 참조하십시오 .
void QGraphicsView::resetTransform()
뷰 변환을 신분 행렬로 재설정합니다.
transform() 및 setTransform()도 참조하십시오 .
[override virtual protected] void QGraphicsView::resizeEvent(QResizeEvent *event)
QAbstractScrollArea::resizeEvent(QResizeEvent *event)을 재구현합니다.
void QGraphicsView::rotate(qreal angle)
현재 뷰 변환을 시계 방향으로 angle 도 회전시킵니다.
setTransform(), transform(), scale(), shear() 및 translate()도 참조하십시오 .
[signal] void QGraphicsView::rubberBandChanged(QRect rubberBandRect, QPointF fromScenePoint, QPointF toScenePoint)
이 신호는 고무줄 사각형(rect)이 변경될 때 발생합니다. 뷰포트 사각형은 ` rubberBandRect`로 지정됩니다. 드래그 시작 위치와 드래그 종료 위치는 ` fromScenePoint ` 및 ` toScenePoint`를 통해 씬 좌표로 제공됩니다.
고무줄 선택이 종료되면 이 신호는 null 값과 함께 발송됩니다.
rubberBandRect()도 참조하십시오 .
QRect QGraphicsView::rubberBandRect() const
이 함수는 사용자가 현재 러버 밴드를 사용하여 항목을 선택 중인 경우, 현재 러버 밴드 영역(뷰포트 좌표 기준)을 반환합니다. 사용자가 러버 밴드를 사용하지 않을 때는 이 함수가 (null인) QRectF()를 반환합니다.
이 ` QRect `의 일부가 시각적 뷰포트 외부에 있을 수 있다는 점에 유의하십시오. 예를 들어 음수 값을 포함할 수도 있습니다.
rubberBandSelectionMode 및 rubberBandChanged()도 참조하십시오 .
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 가 true인 경우 flag 를 활성화하고, 그렇지 않은 경우 flag 를 비활성화합니다.
optimizationFlags도 참조하십시오 .
void QGraphicsView::setRenderHint(QPainter::RenderHint hint, bool enabled = true)
enabled 가 true인 경우, 렌더링 힌트 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 가 true인 경우, matrix 가 현재 행렬과 결합되며, 그렇지 않은 경우 matrix 가 현재 행렬을 대체합니다. combine 는 기본적으로 false입니다.
변환 행렬은 씬을 뷰 좌표계로 변환합니다. 단위 행렬이 제공하는 기본 변환을 사용하면, 뷰의 1픽셀은 씬의 1단위를 나타냅니다(예: 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 *viewport)를 재구현합니다.
이 슬롯은 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 *event)를 재구현합니다.
[override virtual] QSize QGraphicsView::sizeHint() const
QAbstractScrollArea::sizeHint() const를 재구현합니다.
QTransform QGraphicsView::transform() const
뷰에 대한 현재 변환 행렬을 반환합니다. 현재 변환이 설정되어 있지 않으면 단위 행렬이 반환됩니다.
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 는 새로운 장면 사각형입니다. 뷰에 이미 명시적으로 설정된 장면 사각형이 있는 경우, 이 함수는 아무 작업도 수행하지 않습니다.
sceneRect 및 QGraphicsScene::sceneRectChanged()도 참조하십시오 .
[override virtual protected] bool QGraphicsView::viewportEvent(QEvent *event)
QAbstractScrollArea::viewportEvent(QEvent *event)를 재구현합니다.
QTransform QGraphicsView::viewportTransform() const
씬 좌표를 뷰포트 좌표로 매핑하는 행렬을 반환합니다.
mapToScene() 및 mapFromScene()도 참조하십시오 .
[override virtual protected] void QGraphicsView::wheelEvent(QWheelEvent *event)
QAbstractScrollArea::wheelEvent(QWheelEvent *e)를 재구현합니다.
© 2026 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.