QGraphicsScene Class

QGraphicsScene 클래스는 많은 수의 2D 그래픽 항목을 관리할 수 있는 표면을 제공합니다. 더 보기...

Header: #include <QGraphicsScene>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속합니다: QObject

공용 유형

enum ItemIndexMethod { BspTreeIndex, NoIndex }
enum SceneLayer { ItemLayer, BackgroundLayer, ForegroundLayer, AllLayers }
flags SceneLayers

속성

공용 기능

QGraphicsScene(QObject *parent = nullptr)
QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr)
QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr)
virtual ~QGraphicsScene()
QGraphicsItem *activePanel() const
QGraphicsWidget *activeWindow() const
QGraphicsEllipseItem *addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsEllipseItem *addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())
void addItem(QGraphicsItem *item)
QGraphicsLineItem *addLine(const QLineF &line, const QPen &pen = QPen())
QGraphicsLineItem *addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen())
QGraphicsPathItem *addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsPixmapItem *addPixmap(const QPixmap &pixmap)
QGraphicsPolygonItem *addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsRectItem *addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsRectItem *addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())
QGraphicsSimpleTextItem *addSimpleText(const QString &text, const QFont &font = QFont())
QGraphicsTextItem *addText(const QString &text, const QFont &font = QFont())
QGraphicsProxyWidget *addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags())
QBrush backgroundBrush() const
int bspTreeDepth() const
void clearFocus()
QList<QGraphicsItem *> collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItemGroup *createItemGroup(const QList<QGraphicsItem *> &items)
void destroyItemGroup(QGraphicsItemGroup *group)
QGraphicsItem *focusItem() const
bool focusOnTouch() const
QFont font() const
QBrush foregroundBrush() const
bool hasFocus() const
qreal height() const
virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const
void invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = AllLayers)
bool isActive() const
QGraphicsItem *itemAt(const QPointF &position, const QTransform &deviceTransform) const
QGraphicsItem *itemAt(qreal x, qreal y, const QTransform &deviceTransform) const
QGraphicsScene::ItemIndexMethod itemIndexMethod() const
QList<QGraphicsItem *> items(Qt::SortOrder order = Qt::DescendingOrder) const
QList<QGraphicsItem *> items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const
QList<QGraphicsItem *> items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const
QRectF itemsBoundingRect() const
qreal minimumRenderSize() const
QGraphicsItem *mouseGrabberItem() const
QPalette palette() const
void removeItem(QGraphicsItem *item)
void render(QPainter *painter, const QRectF &target = QRectF(), const QRectF &source = QRectF(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio)
QRectF sceneRect() const
QList<QGraphicsItem *> selectedItems() const
QPainterPath selectionArea() const
bool sendEvent(QGraphicsItem *item, QEvent *event)
void setActivePanel(QGraphicsItem *item)
void setActiveWindow(QGraphicsWidget *widget)
void setBackgroundBrush(const QBrush &brush)
void setBspTreeDepth(int depth)
void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason)
void setFocusOnTouch(bool enabled)
void setFont(const QFont &font)
void setForegroundBrush(const QBrush &brush)
void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)
void setMinimumRenderSize(qreal minSize)
void setPalette(const QPalette &palette)
void setSceneRect(const QRectF &rect)
void setSceneRect(qreal x, qreal y, qreal w, qreal h)
void setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform)
void setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform())
void setStickyFocus(bool enabled)
void setStyle(QStyle *style)
bool stickyFocus() const
QStyle *style() const
void update(qreal x, qreal y, qreal w, qreal h)
QList<QGraphicsView *> views() const
qreal width() const

공용 슬롯

void advance()
void clear()
void clearSelection()
void invalidate(const QRectF &rect = QRectF(), QGraphicsScene::SceneLayers layers = AllLayers)
void update(const QRectF &rect = QRectF())

신호

void changed(const QList<QRectF> &region)
void focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason)
void sceneRectChanged(const QRectF &rect)
void selectionChanged()

보호된 함수

virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)
virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual void dragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual void drawBackground(QPainter *painter, const QRectF &rect)
virtual void drawForeground(QPainter *painter, const QRectF &rect)
virtual void dropEvent(QGraphicsSceneDragDropEvent *event)
virtual void focusInEvent(QFocusEvent *focusEvent)
virtual void focusOutEvent(QFocusEvent *focusEvent)
virtual void helpEvent(QGraphicsSceneHelpEvent *helpEvent)
virtual void inputMethodEvent(QInputMethodEvent *event)
virtual void keyPressEvent(QKeyEvent *keyEvent)
virtual void keyReleaseEvent(QKeyEvent *keyEvent)
virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
virtual void wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)

재구현된 보호 함수

virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *watched, QEvent *event) override

보호된 슬롯

virtual bool focusNextPrevChild(bool next)

상세 설명

이 클래스는 QGraphicsItems의 컨테이너 역할을 합니다. 이 클래스는 선, 직사각형, 텍스트 또는 사용자 정의 항목과 같은 그래픽 항목을 2D 표면에 시각화하기 위해 QGraphicsView 와 함께 사용됩니다. QGraphicsScene은 그래픽 뷰 프레임워크의 일부입니다.

또한 QGraphicsScene은 항목의 위치를 효율적으로 결정하고 장면의 임의 영역 내에 표시할 항목을 결정할 수 있는 기능을 제공합니다. QGraphicsView 위젯을 사용하면 전체 씬을 시각화하거나 씬의 일부만 확대하여 볼 수 있습니다.

예시:

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

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

QGraphicsScene은 자체적으로 시각적인 모양이 없으며 항목만 관리한다는 점에 유의하세요. 장면을 시각화하려면 QGraphicsView 위젯을 만들어야 합니다.

씬에 항목을 추가하려면 먼저 QGraphicsScene 객체를 생성합니다. 그런 다음 addItem()를 호출하여 기존 QGraphicsItem 객체를 추가하거나 addEllipse(), addLine(), addPath(), addPixmap(), addPolygon(), addRect() 또는 addText() 중 하나를 호출하여 새로 추가된 항목에 대한 포인터를 반환하는 두 가지 옵션이 있습니다. 이러한 함수를 사용하여 추가된 항목의 치수는 항목의 좌표계를 기준으로 하며, 항목 위치는 장면에서 (0, 0)으로 초기화됩니다.

그런 다음 QGraphicsView 을 사용하여 씬을 시각화할 수 있습니다. 씬이 변경되면(예: 항목이 이동하거나 변형될 때) QGraphicsScene은 changed() 신호를 방출합니다. 항목을 제거하려면 removeItem()를 호출합니다.

QGraphicsScene은 인덱싱 알고리즘을 사용하여 항목의 위치를 효율적으로 관리합니다. 기본적으로 BSP(이진 공간 분할) 트리가 사용되며, 대부분의 항목이 정적으로 유지되는(즉, 이동하지 않는) 큰 장면에 적합한 알고리즘입니다. setItemIndexMethod ()를 호출하여 이 인덱스를 사용하지 않도록 선택할 수 있습니다. 사용 가능한 인덱싱 알고리즘에 대한 자세한 내용은 itemIndexMethod 속성을 참조하세요.

장면의 바운딩 사각형은 setSceneRect()를 호출하여 설정합니다. 항목은 장면의 어느 위치에나 배치할 수 있으며 장면의 크기는 기본적으로 무제한입니다. 씬 렉트는 씬의 항목 인덱스를 유지하는 내부 부기용으로만 사용됩니다. 장면 rect가 설정되지 않은 경우, QGraphicsScene은 itemsBoundingRect()에서 반환된 모든 항목의 경계 영역을 장면 rect로 사용합니다. 그러나 itemsBoundingRect()는 씬의 모든 항목에 대한 위치 정보를 수집하여 작동하므로 상대적으로 시간이 많이 걸리는 함수입니다. 따라서 큰 장면에서 작업할 때는 항상 장면 rect를 설정해야 합니다.

큐그래픽씬의 가장 큰 강점 중 하나는 아이템의 위치를 효율적으로 파악할 수 있다는 점입니다. 씬에 수백만 개의 항목이 있는 경우에도 items() 함수를 사용하면 몇 밀리초 내에 항목의 위치를 확인할 수 있습니다. items ()에는 특정 위치의 아이템 찾기, 다각형이나 직사각형 내부 또는 교차하는 아이템 찾기 등 여러 가지 오버로드가 있습니다. 반환된 항목 목록은 스택 순서에 따라 정렬되며 맨 위에 있는 항목이 목록의 첫 번째 항목이 됩니다. 편의를 위해 지정된 위치에서 최상위 항목을 반환하는 itemAt() 함수도 있습니다.

QGraphicsScene은 씬의 선택 정보를 유지 관리합니다. 항목을 선택하려면 setSelectionArea()를 호출하고 현재 선택을 지우려면 clearSelection()를 호출합니다. selectedItems ()를 호출하여 선택한 모든 항목의 목록을 가져옵니다.

이벤트 처리 및 전파

QGraphicsScene의 또 다른 책임은 QGraphicsView 에서 이벤트를 전파하는 것입니다. 장면에 이벤트를 보내려면 QEvent 을 상속하는 이벤트를 구성한 다음 예를 들어 QCoreApplication::sendEvent()를 사용하여 이벤트를 보냅니다. event()는 개별 항목에 이벤트를 전송하는 역할을 합니다. 일부 일반적인 이벤트는 편의 이벤트 핸들러가 처리합니다. 예를 들어 키 누르기 이벤트는 keyPressEvent()에서 처리하고 마우스 누르기 이벤트는 mousePressEvent()에서 처리합니다.

키 이벤트는 포커스 항목으로 전달됩니다. 포커스 항목을 설정하려면 setFocusItem()를 호출하여 포커스를 허용하는 항목을 전달하거나 항목 자체에서 QGraphicsItem::setFocus()를 호출할 수 있습니다. 현재 포커스 항목을 가져오려면 focusItem()를 호출합니다. 위젯과의 호환성을 위해 씬은 자체 포커스 정보도 유지합니다. 기본적으로 장면에는 포커스가 없으며 모든 주요 이벤트가 삭제됩니다. setFocus ()가 호출되거나 장면의 항목이 포커스를 받으면 장면이 자동으로 포커스를 받습니다. 씬에 포커스가 있는 경우 hasFocus()는 참을 반환하고 주요 이벤트가 있는 경우 포커스 항목으로 전달됩니다. 항목에 포커스가 있는 동안 누군가가 clearFocus()를 호출하는 등 장면이 포커스를 잃으면 장면은 해당 항목 포커스 정보를 유지하고, 장면이 포커스를 되찾으면 마지막 포커스 항목이 포커스를 되찾도록 합니다.

마우스 오버 효과의 경우 QGraphicsScene은 호버 이벤트를 전송합니다. 항목이 호버 이벤트를 수락하는 경우( QGraphicsItem::acceptHoverEvents() 참조) 마우스가 해당 영역에 들어가면 GraphicsSceneHoverEnter 이벤트를 수신합니다. 마우스가 항목의 영역 내에서 계속 움직이면 QGraphicsScene은 GraphicsSceneHoverMove 이벤트를 전송합니다. 마우스가 항목의 영역을 벗어나면 항목은 GraphicsSceneHoverLeave 이벤트를 받습니다.

모든 마우스 이벤트는 현재 마우스 그래버 항목으로 전달됩니다. 마우스 이벤트를 수락하고( QGraphicsItem::acceptedMouseButtons() 참조) 마우스 프레스를 받으면 항목이 씬의 마우스 그래버가 됩니다. 다른 마우스 버튼이 눌리지 않으면 마우스 릴리스가 수신될 때까지 마우스 그래버 상태를 유지합니다. mouseGrabberItem ()를 호출하여 현재 마우스를 잡고 있는 항목을 확인할 수 있습니다.

QGraphicsItemQGraphicsView참조하세요 .

멤버 유형 문서

enum QGraphicsScene::ItemIndexMethod

이 열거형은 씬의 항목에 대한 위치 정보를 관리하기 위해 QGraphicsScene 에서 제공하는 인덱싱 알고리즘을 설명합니다.

Constant설명
QGraphicsScene::BspTreeIndex0이진 공간 분할 트리가 적용됩니다. QGraphicsScene 의 모든 아이템 위치 알고리즘은 이진 검색을 사용하여 대수적 복잡성에 가까운 순서를 갖습니다. 항목 추가, 이동 및 제거는 대수적입니다. 이 접근 방식은 정적인 장면(즉, 대부분의 항목이 움직이지 않는 장면)에 가장 적합합니다.
QGraphicsScene::NoIndex-1인덱스가 적용되지 않습니다. 씬의 모든 항목이 검색되므로 항목 위치는 선형적 복잡성을 갖습니다. 그러나 항목 추가, 이동 및 제거는 일정한 시간에 수행됩니다. 이 접근 방식은 많은 항목이 지속적으로 추가, 이동 또는 제거되는 동적 장면에 이상적입니다.

setItemIndexMethod() 및 bspTreeDepth참조하세요 .

열거형 QGraphicsScene::SceneLayer
플래그 QGraphicsScene::SceneLayers

이 열거형은 QGraphicsScene 에서 렌더링 레이어를 설명합니다. QGraphicsScene 이 씬 콘텐츠를 그릴 때 각 레이어를 순서대로 개별적으로 렌더링합니다.

각 레이어는 invalidate() 또는 QGraphicsView::invalidateScene()와 같은 함수를 호출할 때 함께 OR할 수 있는 플래그를 나타냅니다.

상수설명
QGraphicsScene::ItemLayer0x1아이템 레이어. QGraphicsScene 는 가상 함수 drawItems()를 호출하여 이 레이어에 있는 모든 아이템을 렌더링합니다. 항목 레이어는 배경 레이어 다음에 그려지지만 전경 레이어보다 먼저 그려집니다.
QGraphicsScene::BackgroundLayer0x2QGraphicsScene 가상 함수 drawBackground()를 호출하여 이 레이어에서 장면의 배경을 렌더링합니다. 배경 레이어는 모든 레이어 중 가장 먼저 그려집니다.
QGraphicsScene::ForegroundLayer0x4전경 레이어. QGraphicsScene 가상 함수 drawForeground()를 호출하여 이 레이어에서 장면의 전경을 렌더링합니다. 전경 레이어는 모든 레이어 중 가장 마지막으로 그려집니다.
QGraphicsScene::AllLayers0xffff모든 레이어; 이 값은 세 레이어 모두의 조합을 나타냅니다.

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

invalidate() 및 QGraphicsView::invalidateScene()도 참조하세요 .

속성 문서

backgroundBrush : QBrush

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

이 속성을 설정하면 장면의 배경을 다른 색상, 그라데이션 또는 텍스처로 변경할 수 있습니다. 기본 배경 브러시는 Qt::NoBrush 입니다. 배경은 항목 앞(뒤)에 그려집니다.

예시:

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

// a blue background
scene.setBackgroundBrush(Qt::blue);

// a gradient background
QRadialGradient gradient(0, 0, 10);
gradient.setSpread(QGradient::RepeatSpread);
scene.setBackgroundBrush(gradient);

QGraphicsScene::render()는 drawBackground()를 호출하여 장면 배경을 그립니다. 배경이 그려지는 방식을 더 자세히 제어하려면 QGraphicsScene 의 서브클래스에서 drawBackground()를 다시 구현할 수 있습니다.

함수 액세스:

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

bspTreeDepth : int

이 속성은 QGraphicsScene 의 BSP 인덱스 트리의 깊이를 보유합니다.

NoIndex 사용 시 이 속성은 영향을 미치지 않습니다.

이 값은 QGraphicsScene 의 BSP 트리의 깊이를 결정합니다. 깊이는 QGraphicsScene 의 성능과 메모리 사용량에 직접적인 영향을 미치며, 후자는 트리의 깊이에 따라 기하급수적으로 증가합니다. 최적의 트리 깊이를 사용하면 QGraphicsScene 은 수천 개 또는 수백만 개의 아이템이 있는 장면에서도 아이템의 위치를 즉시 파악할 수 있습니다. 또한 렌더링 성능도 크게 향상됩니다.

기본적으로 이 값은 0이며, 이 경우 Qt는 씬의 크기, 위치, 항목 수에 따라 적절한 기본 깊이를 추측합니다. 그러나 이러한 매개변수가 자주 변경되면 QGraphicsScene 에서 내부적으로 깊이를 재조정하기 때문에 속도가 느려질 수 있습니다. 이 속성을 설정하여 트리 깊이를 고정하면 잠재적인 속도 저하를 방지할 수 있습니다.

트리의 깊이와 씬 사각형의 크기는 씬 분할의 세분성을 결정합니다. 각 씬 세그먼트의 크기는 다음 알고리즘에 의해 결정됩니다:

QSizeF segmentSize = sceneRect().size() / pow(2, depth - 1);

각 세그먼트에 0~10개의 항목이 포함될 때 BSP 트리는 최적의 크기를 갖습니다.

액세스 함수:

int bspTreeDepth() const
void setBspTreeDepth(int depth)

itemIndexMethod참조하세요 .

focusOnTouch : bool

이 속성은 터치 시작 이벤트를 수신할 때 항목이 포커스를 받을지 여부를 저장합니다.

일반적인 동작은 항목을 클릭할 때만 포커스를 이동하는 것입니다. 종종 터치패드를 탭하면 운영 체제에서 마우스 클릭과 동일한 것으로 해석하여 이에 대한 응답으로 합성된 클릭 이벤트를 생성합니다. 그러나 적어도 macOS에서는 이 동작을 구성할 수 있습니다.

기본적으로 QGraphicsScene 은 트랙패드 등을 터치할 때 포커스를 이동합니다. 운영 체제가 트랙패드를 탭할 때 합성 마우스 클릭을 생성하지 않도록 구성된 경우에는 의외의 결과입니다. 운영 체제가 트랙패드를 탭할 때 합성 마우스 클릭을 생성하는 경우 터치 제스처를 시작할 때 포커스를 이동할 필요가 없습니다.

포커스온터치를 끄면 QGraphicsScene 은 macOS에서 예상되는 대로 작동합니다.

기본값은 true 으로 5.12 이전 Qt 버전과 동일한 기본 동작을 보장합니다. 터치 이벤트가 포커스 변경을 트리거하지 않도록 하려면 false 로 설정합니다.

함수 액세스:

bool focusOnTouch() const
void setFocusOnTouch(bool enabled)

font : QFont

이 프로퍼티에는 씬의 기본 글꼴이 저장됩니다.

이 프로퍼티는 씬의 글꼴을 제공합니다. 씬 글꼴의 기본값은 QApplication::font 이며, 모든 항목은 에서 확인합니다.

씬의 글꼴이 변경되면, setFont()를 통해 직접적으로 또는 애플리케이션 글꼴이 변경될 때 간접적으로, QGraphicsScene 는 먼저 FontChange 이벤트를 보낸 다음, 씬의 모든 최상위 위젯 항목에 FontChange 이벤트를 보냅니다. 이러한 항목은 자체 글꼴을 씬에 맞게 조정하여 응답한 다음, 모든 위젯 항목이 글꼴을 업데이트할 때까지 자식에게 알리고, 자식은 다시 자식에게 알림을 보내는 식으로 응답합니다.

QApplication::setFont()를 통해 직접 또는 간접적으로 장면 글꼴을 변경하면 전체 장면을 다시 그리도록 자동으로 예약됩니다.

기능에 액세스합니다:

QFont font() const
void setFont(const QFont &font)

QWidget::font, QApplication::setFont(), palette, style()도 참조하세요 .

foregroundBrush : QBrush

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

이 속성을 변경하여 장면의 전경을 다른 색상, 그라데이션 또는 텍스처로 설정할 수 있습니다.

전경은 항목 뒤(위에)에 그려집니다. 기본 전경 브러시는 Qt::NoBrush (즉, 전경이 그려지지 않음)입니다.

예시:

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

// a white semi-transparent foreground
scene.setForegroundBrush(QColor(255, 255, 255, 127));

// a grid foreground
scene.setForegroundBrush(QBrush(Qt::lightGray, Qt::CrossPattern));

QGraphicsScene::render()는 drawForeground()를 호출하여 장면 전경을 그립니다. 전경이 그려지는 방식을 더 자세히 제어하려면 QGraphicsScene 하위 클래스에서 drawForeground() 함수를 다시 구현할 수 있습니다.

함수에 액세스합니다:

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

itemIndexMethod : ItemIndexMethod

이 속성은 항목 인덱싱 메서드를 보유합니다.

QGraphicsScene 는 씬에 인덱싱 알고리즘을 적용하여 items() 및 itemAt()와 같은 항목 검색 기능의 속도를 높입니다. 인덱싱은 정적 씬(즉, 아이템이 움직이지 않는 씬)에 가장 효율적입니다. 동적 씬이나 애니메이션 항목이 많은 씬의 경우 인덱스 북키핑이 빠른 조회 속도를 능가할 수 있습니다.

일반적인 경우 기본 인덱스 방법 BspTreeIndex 이 잘 작동합니다. 장면에 많은 애니메이션이 사용되어 속도가 느려지는 경우 setItemIndexMethod(NoIndex) 을 호출하여 인덱싱을 비활성화할 수 있습니다.

함수에 액세스합니다:

QGraphicsScene::ItemIndexMethod itemIndexMethod() const
void setItemIndexMethod(QGraphicsScene::ItemIndexMethod method)

bspTreeDepth참조하세요 .

minimumRenderSize : qreal

이 속성은 항목이 그려지기 위해 필요한 최소 뷰 변환 크기를 보유합니다.

장면이 렌더링될 때 대상 보기로 변환된 너비 또는 높이가 minimumRenderSize()보다 작은 항목은 렌더링되지 않습니다. 항목이 렌더링되지 않고 자식 항목을 클립하는 경우 해당 항목도 렌더링되지 않습니다. 이 값을 설정하면 축소된 보기에 렌더링된 객체가 많은 장면의 렌더링 속도를 높일 수 있습니다.

기본값은 0입니다. 설정하지 않거나 0 또는 음수 값으로 설정하면 모든 항목이 항상 렌더링됩니다.

예를 들어, 이 속성을 설정하면 장면이 여러 뷰에서 렌더링되고 그 중 하나가 항상 모든 항목을 표시하는 개요 역할을 하는 경우에 특히 유용할 수 있습니다. 항목이 많은 장면에서 이러한 뷰는 모든 항목이 표시될 수 있도록 높은 배율을 사용합니다. 스케일링으로 인해 작은 항목은 최종 렌더링된 장면에 미미한 기여만 하게 됩니다. 이러한 항목을 그리지 않고 장면을 렌더링하는 데 필요한 시간을 줄이려면 음수가 아닌 값으로 setMinimumRenderSize()를 호출하면 됩니다.

참고: 너무 작아서 그려지지 않는 항목도 items() 및 itemAt() 등의 메서드를 통해 반환되며 충돌 감지 및 상호 작용에 참여합니다. 렌더링되지 않은 대형 인터랙티브 아이템을 피하려면 최소 렌더사이즈()를 1보다 작은 값으로 설정하는 것이 좋습니다.

함수에 액세스합니다:

qreal minimumRenderSize() const
void setMinimumRenderSize(qreal minSize)

QStyleOptionGraphicsItem::levelOfDetailFromTransform()도 참조하세요 .

palette : QPalette

이 프로퍼티는 씬의 기본 팔레트를 보유합니다.

이 프로퍼티는 씬의 팔레트를 제공합니다. 장면 팔레트의 기본값은 QApplication::palette 이며, 모든 항목은 에서 확인합니다.

장면의 팔레트가 변경되면, 직접적으로 setPalette()를 통해 또는 애플리케이션 팔레트가 변경될 때 간접적으로, QGraphicsScene 는 먼저 PaletteChange 이벤트를 보낸 다음 장면의 모든 최상위 위젯 항목에 PaletteChange 이벤트를 보냅니다. 이러한 항목은 자신의 팔레트를 씬에 맞게 조정하여 응답하고, 그 다음 자식에게 알리고, 자식은 다시 자식에게 알리는 식으로 모든 위젯 항목이 팔레트를 업데이트할 때까지 응답합니다.

장면 팔레트를 변경하면( QApplication::setPalette()를 통해 직접 또는 간접적으로) 전체 장면을 다시 그리도록 자동으로 예약됩니다.

기능에 액세스합니다:

QPalette palette() const
void setPalette(const QPalette &palette)

QWidget::palette, QApplication::setPalette(), font, style()도 참조하세요 .

sceneRect : QRectF

이 속성은 씬의 경계 사각형인 씬 직사각형을 보유합니다.

장면 사각형은 장면의 범위를 정의합니다. 주로 QGraphicsView 에서 뷰의 기본 스크롤 가능한 영역을 결정하고 QGraphicsScene 에서 항목 인덱싱을 관리하는 데 사용됩니다.

설정하지 않거나 null QRectF 로 설정하면 sceneRect()는 장면이 생성된 이후 장면에 있는 모든 항목 중 가장 큰 경계 사각형(즉, 장면에서 항목이 추가되거나 이동할 때 커지지만 절대 줄어들지 않는 사각형)을 반환합니다.

함수 액세스:

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

width(), height() 및 QGraphicsView::sceneRect참조하십시오 .

stickyFocus : bool

이 속성은 장면 배경을 클릭하면 포커스가 지워질지 여부를 유지합니다.

stickyFocus가 true로 설정된 QGraphicsScene 에서는 사용자가 장면 배경이나 포커스를 허용하지 않는 항목을 클릭해도 포커스가 변경되지 않습니다. 그렇지 않으면 포커스가 지워집니다.

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

마우스를 누르면 초점이 변경됩니다. QGraphicsScene 의 하위 클래스에서 mousePressEvent()를 다시 구현하여 사용자가 클릭한 위치에 따라 이 속성을 토글할 수 있습니다.

액세스 함수:

bool stickyFocus() const
void setStickyFocus(bool enabled)

clearFocus() 및 setFocusItem()도 참조하세요 .

멤버 함수 문서

QGraphicsScene::QGraphicsScene(QObject *parent = nullptr)

QGraphicsScene 객체를 생성합니다. parent 파라미터는 QObject 의 생성자에 전달됩니다.

QGraphicsScene::QGraphicsScene(const QRectF &sceneRect, QObject *parent = nullptr)

씬 사각형에 sceneRect 을 사용하여 QGraphicsScene 객체를 생성합니다. parent 파라미터는 QObject 의 생성자에 전달됩니다.

sceneRect도 참조하십시오 .

QGraphicsScene::QGraphicsScene(qreal x, qreal y, qreal width, qreal height, QObject *parent = nullptr)

(x, y)로 지정된 사각형과 주어진 widthheight 을 씬 사각형으로 사용하여 QGraphicsScene 객체를 생성합니다. parent 파라미터는 QObject 의 생성자에 전달됩니다.

sceneRect도 참조하십시오 .

[virtual noexcept] QGraphicsScene::~QGraphicsScene()

장면 개체를 파괴하기 전에 장면 개체에서 모든 항목을 제거 및 삭제합니다. 씬 객체가 애플리케이션의 전역 씬 목록에서 제거되고 관련된 모든 뷰에서 제거됩니다.

QGraphicsItem *QGraphicsScene::activePanel() const

현재 활성화된 패널을 반환하거나 현재 활성화된 패널이 없는 경우 nullptr 을 반환합니다.

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

QGraphicsWidget *QGraphicsScene::activeWindow() const

현재 활성화된 창을 반환하거나 현재 활성화된 창이 없는 경우 nullptr 을 반환합니다.

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

QGraphicsEllipseItem *QGraphicsScene::addEllipse(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())

타원 항목을 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 타원의 지오메트리는 rect 에 의해 정의되며, 펜과 브러시는 penbrush 로 초기화됩니다.

항목의 지오메트리는 항목 좌표로 제공되며 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()는 true)를 반환하고, 제어가 이벤트 루프로 돌아가면 QGraphicsScenechanged()를 방출합니다.

addLine(), addPath(), addPixmap(), addRect(), addText(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsEllipseItem *QGraphicsScene::addEllipse(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())

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

void QGraphicsScene::addItem(QGraphicsItem *item)

item 및 모든 자식을 이 장면에 추가하거나 이동합니다. 이 장면은 item 의 소유권을 갖습니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()가 참을 반환하는 경우) 제어가 이벤트 루프로 돌아가면 QGraphicsScenechanged()를 방출합니다.

항목이 이미 다른 장면에 있는 경우, 먼저 이전 장면에서 제거된 다음 이 장면에 최상위 레벨로 추가됩니다.

QGraphicsScene 씬에 추가되는 동안 item 으로 ItemSceneChange 알림을 보냅니다. 항목이 현재 씬에 속하지 않은 경우 알림이 한 번만 전송됩니다. 이미 씬에 속해 있는 경우(즉, 이 씬으로 이동한 경우), QGraphicsScene 은 이전 씬에서 항목이 제거될 때 추가 알림을 보냅니다.

항목이 패널이고 씬이 활성화되어 있으며 씬에 활성 패널이 없는 경우 항목이 활성화됩니다.

removeItem(), addEllipse(), addLine(), addPath(), addPixmap(), addRect(), addText(), addWidget() 및 Sorting참조하십시오 .

QGraphicsLineItem *QGraphicsScene::addLine(const QLineF &line, const QPen &pen = QPen())

선 항목을 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 선의 지오메트리는 line 에 의해 정의되고 펜은 pen 으로 초기화됩니다.

항목의 지오메트리는 항목 좌표로 제공되며 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()는 true)를 반환하고, 제어가 이벤트 루프로 돌아가면 QGraphicsScenechanged()를 방출합니다.

addEllipse(), addPath(), addPixmap(), addRect(), addText(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsLineItem *QGraphicsScene::addLine(qreal x1, qreal y1, qreal x2, qreal y2, const QPen &pen = QPen())

이 편의 함수는 addLine(QLineF(x1, y1, x2, y2), pen)을 호출하는 것과 동일합니다.

QGraphicsPathItem *QGraphicsScene::addPath(const QPainterPath &path, const QPen &pen = QPen(), const QBrush &brush = QBrush())

경로 항목을 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 경로의 지오메트리는 path 에 의해 정의되며 펜과 브러시는 penbrush 로 초기화됩니다.

항목의 지오메트리는 항목 좌표로 제공되며 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()는 true)를 반환하고, 제어가 이벤트 루프로 돌아가면 QGraphicsScenechanged()를 방출합니다.

addEllipse(), addLine(), addPixmap(), addRect(), addText(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsPixmapItem *QGraphicsScene::addPixmap(const QPixmap &pixmap)

장면에 픽셀맵 항목을 생성 및 추가하고 항목 포인터를 반환합니다. 픽셀맵은 pixmap 에 의해 정의됩니다.

항목의 지오메트리는 항목 좌표로 제공되며 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()는 true)를 반환하고, QGraphicsScene 는 제어가 이벤트 루프로 돌아간 후 changed()를 방출합니다.

addEllipse(), addLine(), addPath(), addRect(), addText(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsPolygonItem *QGraphicsScene::addPolygon(const QPolygonF &polygon, const QPen &pen = QPen(), const QBrush &brush = QBrush())

다각형 항목을 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 다각형은 polygon 로 정의되며 펜과 브러시는 penbrush 로 초기화됩니다.

항목의 지오메트리는 항목 좌표로 제공되며 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()는 true)를 반환하고, 제어가 이벤트 루프로 돌아가면 QGraphicsScenechanged()를 방출합니다.

addEllipse(), addLine(), addPath(), addRect(), addText(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsRectItem *QGraphicsScene::addRect(const QRectF &rect, const QPen &pen = QPen(), const QBrush &brush = QBrush())

직사각형 항목을 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 직사각형의 지오메트리는 rect 에 의해 정의되며 펜과 브러시는 penbrush 로 초기화됩니다.

항목의 지오메트리는 항목 좌표로 제공되며 위치는 (0, 0)으로 초기화됩니다. 예를 들어 QRect(50, 50, 100, 100)을 추가하면 항목의 좌표계에서 원점을 기준으로 왼쪽 상단 모서리가 (50, 50)에 위치하게 됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()가 true)을 반환하는 경우 제어가 이벤트 루프로 돌아간 후 QGraphicsScenechanged()를 방출합니다.

addEllipse(), addLine(), addPixmap(), addPixmap(), addText(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsRectItem *QGraphicsScene::addRect(qreal x, qreal y, qreal w, qreal h, const QPen &pen = QPen(), const QBrush &brush = QBrush())

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

QGraphicsSimpleTextItem *QGraphicsScene::addSimpleText(const QString &text, const QFont &font = QFont())

QGraphicsSimpleTextItem 를 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 텍스트 문자열은 text 로 초기화되고 해당 글꼴은 font 으로 초기화됩니다.

항목의 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()가 true)을 반환하는 경우 제어가 이벤트 루프로 돌아간 후 QGraphicsScenechanged()를 방출합니다.

addEllipse(), addLine(), addPixmap(), addPixmap(), addRect(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsTextItem *QGraphicsScene::addText(const QString &text, const QFont &font = QFont())

텍스트 항목을 생성하여 장면에 추가하고 항목 포인터를 반환합니다. 텍스트 문자열은 text 로 초기화되고 해당 글꼴은 font 으로 초기화됩니다.

항목의 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되는 경우(즉, QGraphicsItem::isVisible()가 true)을 반환하는 경우 제어가 이벤트 루프로 돌아간 후 QGraphicsScenechanged()를 방출합니다.

addEllipse(), addLine(), addPixmap(), addPixmap(), addRect(), addItem() 및 addWidget()도 참조하세요 .

QGraphicsProxyWidget *QGraphicsScene::addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags())

widget 에 대해 QGraphicsProxyWidget 를 새로 생성하여 씬에 추가하고 프록시에 대한 포인터를 반환합니다. wFlags 임베딩 프록시 위젯의 기본 창 플래그를 설정합니다.

항목의 위치는 (0, 0)으로 초기화됩니다.

항목이 표시되면(즉, QGraphicsItem::isVisible() true), 제어가 이벤트 루프로 돌아가면 QGraphicsScene changed () 을 반환합니다.

Qt::WA_PaintOnScreen 위젯 속성이 설정된 위젯과 외부 애플리케이션 또는 컨트롤러를 래핑하는 위젯은 지원되지 않습니다. 예를 들어 QOpenGLWidget 및 QAxWidget이 있습니다.

addEllipse(), addLine(), addPixmap(), addPixmap(), addRect(), addText(), addSimpleText(), addItem()도 참조하세요 .

[slot] void QGraphicsScene::advance()

이 슬롯은 씬의 모든 항목에 대해 QGraphicsItem::advance()를 호출하여 씬을 한 단계 진행시킵니다. 이 작업은 두 단계로 수행됩니다. 첫 번째 단계에서는 모든 항목에 장면이 곧 변경될 것임을 알리고, 두 번째 단계에서는 모든 항목에 이동이 가능하다는 알림을 보냅니다. 첫 번째 단계에서는 0 값을 인수로 전달하여 QGraphicsItem::advance()를 호출하고, 두 번째 단계에서는 1을 전달합니다.

애니메이션에는 애니메이션 프레임워크를 사용할 수도 있습니다.

QGraphicsItem::advance() 및 QTimeLine참조하세요 .

[signal] void QGraphicsScene::changed(const QList<QRectF> &region)

이 신호는 씬 콘텐츠가 변경되면 제어가 이벤트 루프에 도달하면 QGraphicsScene 에서 발신합니다. region 매개변수에는 변경된 영역을 나타내는 장면 사각형 목록이 포함되어 있습니다.

QGraphicsView::updateScene()도 참조하세요 .

[slot] void QGraphicsScene::clear()

씬에서 모든 항목을 제거하고 삭제하지만 그렇지 않으면 씬의 상태를 변경하지 않고 그대로 유지합니다.

addItem()도 참조하세요 .

void QGraphicsScene::clearFocus()

장면에서 초점을 지웁니다. 이 함수가 호출될 때 초점이 있는 항목이 있으면 초점을 잃고 장면이 다시 초점을 잡으면 다시 초점을 되찾습니다.

초점이 없는 장면은 주요 이벤트를 무시합니다.

hasFocus(), setFocus() 및 setFocusItem()도 참조하십시오 .

[slot] void QGraphicsScene::clearSelection()

현재 선택 항목을 지웁니다.

setSelectionArea() 및 selectedItems()도 참조하세요 .

QList<QGraphicsItem *> QGraphicsScene::collidingItems(const QGraphicsItem *item, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const

item 와 충돌하는 모든 항목의 목록을 반환합니다. 충돌 여부는 QGraphicsItem::collidesWithItem()를 호출하여 결정되며, 충돌 감지는 mode 에 의해 결정됩니다. 기본적으로 모양이 item 와 교차하거나 item 의 모양 안에 포함된 모든 항목이 반환됩니다.

항목은 내림차순으로 반환됩니다(즉, 목록의 첫 번째 항목이 가장 위쪽 항목이고 마지막 항목이 가장 아래쪽 항목입니다).

items(), itemAt(), QGraphicsItem::collidesWithItem() 및 Sorting도 참조하세요 .

[virtual protected] void QGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent *contextMenuEvent)

이벤트 contextMenuEvent 에 대한 이 이벤트 핸들러는 컨텍스트 메뉴 이벤트를 수신하도록 하위 클래스에서 다시 구현할 수 있습니다. 기본 구현은 이벤트 위치에서 컨텍스트 메뉴 이벤트를 수락하는 가장 위에 보이는 항목으로 이벤트를 전달합니다. 이 위치에서 컨텍스트 메뉴 이벤트를 수락하는 항목이 없으면 이벤트가 무시됩니다.

참고: 이 함수에 의해 표시되는 항목에 대한 정의는 items()를 참조하세요.

QGraphicsItem::contextMenuEvent()도 참조하세요 .

QGraphicsItemGroup *QGraphicsScene::createItemGroup(const QList<QGraphicsItem *> &items)

items 의 모든 항목을 새 QGraphicsItemGroup 로 그룹화하고 그룹에 대한 포인터를 반환합니다. 이 그룹은 items 의 공통 조상을 부모로 하고 위치(0, 0)를 사용하여 생성됩니다. 항목은 모두 그룹으로 다시 부모가 지정되고 해당 위치 및 변환이 그룹에 매핑됩니다. items 이 비어 있으면 이 함수는 빈 최상위 수준 QGraphicsItemGroup 을 반환합니다.

QGraphicsScene 는 그룹 항목의 소유권을 가지므로 삭제할 필요가 없습니다. 그룹을 해체(그룹 해제)하려면 destroyItemGroup()를 호출합니다.

destroyItemGroup() 및 QGraphicsItemGroup::addToGroup()도 참조하세요 .

void QGraphicsScene::destroyItemGroup(QGraphicsItemGroup *group)

group 의 모든 항목을 group 의 상위 항목으로 리패런팅한 다음 장면에서 group 을 제거한 다음 마지막으로 삭제합니다. 항목의 위치와 변환은 그룹에서 그룹의 부모로 매핑됩니다.

createItemGroup() 및 QGraphicsItemGroup::removeFromGroup()도 참조하십시오 .

[virtual protected] void QGraphicsScene::dragEnterEvent(QGraphicsSceneDragDropEvent *event)

이벤트 event 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 장면에 대한 드래그 입력 이벤트를 수신할 수 있습니다.

기본 구현은 이벤트를 수락하고 장면이 드래그 이동 이벤트를 수락하도록 준비합니다.

QGraphicsItem::dragEnterEvent(), dragMoveEvent(), dragLeaveEvent() 및 dropEvent()도 참조하세요 .

[virtual protected] void QGraphicsScene::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)

이벤트 event 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 씬에 대한 드래그 아웃 이벤트를 수신할 수 있습니다.

QGraphicsItem::dragLeaveEvent(), dragEnterEvent(), dragMoveEvent() 및 dropEvent()도 참조하세요 .

[virtual protected] void QGraphicsScene::dragMoveEvent(QGraphicsSceneDragDropEvent *event)

이벤트 event 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 장면에 대한 드래그 이동 이벤트를 수신할 수 있습니다.

참고: 이 함수가 표시되는 것으로 간주되는 항목에 대한 정의는 items()를 참조하세요.

QGraphicsItem::dragMoveEvent(), dragEnterEvent(), dragLeaveEvent() 및 dropEvent()도 참조하세요 .

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

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

모든 페인팅은 장면 좌표에서 수행됩니다. rect 매개 변수는 노출된 사각형입니다.

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

drawForeground() 및 drawItems()도 참조하세요 .

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

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

모든 페인팅은 장면 좌표에서 수행됩니다. rect 매개 변수는 노출된 사각형입니다.

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

drawBackground() 및 drawItems()도 참조하세요 .

[virtual protected] void QGraphicsScene::dropEvent(QGraphicsSceneDragDropEvent *event)

이벤트 event 에 대한 이 이벤트 핸들러를 하위 클래스에서 다시 구현하여 씬에 대한 드롭 이벤트를 수신할 수 있습니다.

QGraphicsItem::dropEvent(), dragEnterEvent(), dragMoveEvent() 및 dragLeaveEvent()도 참조하세요 .

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

다시 구현합니다: QObject::event(QEvent *e).

event 이벤트를 처리하여 각 이벤트 핸들러로 전송합니다.

이 함수는 편의 이벤트 핸들러를 호출하는 것 외에도 마우스 그래버 아이템이 없을 때 마우스 이동 이벤트를 호버 이벤트로 변환하는 역할을 담당합니다. 호버 이벤트는 아이템에 직접 전달되며, 이에 대한 편의 기능은 없습니다.

QWidget 와 달리 QGraphicsScene 에는 enterEvent() 및 leaveEvent() 편의 함수가 없습니다. 대신 이 함수를 사용하여 해당 이벤트를 가져옵니다.

event 이 인식되어 처리된 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

contextMenuEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent(), focusInEvent(), focusOutEvent()도 참조하세요 .

[override virtual protected] bool QGraphicsScene::eventFilter(QObject *watched, QEvent *event)

다시 구현합니다: QObject::eventFilter(QObject *watched, QEvent *event).

QGraphicsSceneQApplication 의 이벤트를 필터링하여 팔레트 및 글꼴 변경을 감지합니다.

[virtual protected] void QGraphicsScene::focusInEvent(QFocusEvent *focusEvent)

이벤트 focusEvent 에 대한 이 이벤트 핸들러는 이벤트에서 포커스를 받도록 하위 클래스에서 다시 구현할 수 있습니다.

기본 구현은 장면에 포커스를 설정한 다음 마지막 포커스 항목에 포커스를 설정합니다.

QGraphicsItem::focusOutEvent()도 참조하세요 .

QGraphicsItem *QGraphicsScene::focusItem() const

장면이 활성화된 경우 이 함수는 장면의 현재 초점 항목을 반환하고, 현재 초점이 있는 항목이 없는 경우 nullptr 을 반환합니다. 장면이 비활성 상태인 경우, 이 함수는 장면이 활성화될 때 입력 포커스를 받을 항목을 반환합니다.

포커스 항목은 씬이 키 이벤트를 수신할 때 키보드 입력을 받습니다.

setFocusItem(), QGraphicsItem::hasFocus() 및 isActive()도 참조하십시오 .

[signal] void QGraphicsScene::focusItemChanged(QGraphicsItem *newFocusItem, QGraphicsItem *oldFocusItem, Qt::FocusReason reason)

이 신호는 씬에서 초점이 변경될 때마다(즉, 항목이 입력 초점을 얻거나 잃을 때 또는 초점이 한 항목에서 다른 항목으로 넘어갈 때) QGraphicsScene 에서 방출됩니다. 다른 항목이 입력 포커스를 얻는 시점을 추적해야 하는 경우 이 신호에 연결할 수 있습니다. 가상 키보드, 입력 방법 및 커서 항목을 구현할 때 특히 유용합니다.

oldFocusItem 는 이전에 포커스가 있었던 항목의 포인터(신호가 방출되기 전에 포커스가 있었던 항목이 없는 경우 0)입니다. newFocusItem 는 입력 포커스를 얻은 항목의 포인터, nullptr 는 포커스가 손실된 경우입니다. reason 는 포커스 변경의 이유(예: 입력 필드에 포커스가 있는 동안 장면이 비활성화되었다면 oldFocusItem 는 입력 필드 항목을 가리키고 newFocusItemnullptr, reasonQt::ActiveWindowFocusReason 입니다.

[virtual protected slot] bool QGraphicsScene::focusNextPrevChild(bool next)

Tab 및 Shift+Tab에 적합한 새 위젯을 찾아 키보드 포커스를 지정하고, 새 위젯을 찾을 수 있으면 true, 찾을 수 없으면 false를 반환합니다. next 가 참이면 이 함수는 앞으로 검색하고 next 가 거짓이면 뒤로 검색합니다.

QGraphicsScene 의 서브클래스에서 이 함수를 다시 구현하여 씬 내에서 탭 포커스가 어떻게 전달되는지 세밀하게 제어할 수 있습니다. 기본 구현은 QGraphicsWidget::setTabOrder()에 정의된 탭 포커스 체인을 기반으로 합니다.

[virtual protected] void QGraphicsScene::focusOutEvent(QFocusEvent *focusEvent)

이벤트 focusEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 포커스 아웃 이벤트를 수신할 수 있습니다.

기본 구현은 모든 포커스 항목에서 포커스를 제거한 다음 장면에서 포커스를 제거합니다.

QGraphicsItem::focusInEvent()도 참조하십시오 .

bool QGraphicsScene::hasFocus() const

씬에 포커스가 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다. 씬에 포커스가 있는 경우 QKeyEvent 에서 포커스가 있는 모든 항목으로 주요 이벤트를 전달합니다.

setFocus() 및 setFocusItem()도 참조하세요 .

qreal QGraphicsScene::height() const

이 편의 기능은 sceneRect().height() 을 호출하는 것과 동일합니다.

width()도 참조하세요 .

[virtual protected] void QGraphicsScene::helpEvent(QGraphicsSceneHelpEvent *helpEvent)

이벤트 helpEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 도움말 이벤트를 수신할 수 있습니다. 이벤트 유형은 QEvent::ToolTip 이며, 툴팁이 요청될 때 생성됩니다.

기본 구현은 마우스 커서 위치에서 가장 위에 보이는 항목, 즉 가장 높은 z 값을 가진 항목의 툴팁을 표시합니다. 툴팁이 설정된 항목이 없으면 이 함수는 아무 작업도 수행하지 않습니다.

참고: 이 함수에 의해 표시되는 항목에 대한 정의는 items()를 참조하세요.

QGraphicsItem::toolTip() 및 QGraphicsSceneHelpEvent참조하세요 .

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

이벤트 event 에 대한 이 이벤트 핸들러는 서브클래스에서 다시 구현하여 장면에 대한 입력 메서드 이벤트를 수신할 수 있습니다.

기본 구현은 이벤트를 focusItem()로 전달합니다. 현재 포커스가 있는 항목이 없거나 현재 포커스 항목이 입력 메서드를 허용하지 않는 경우 이 함수는 아무 작업도 수행하지 않습니다.

QGraphicsItem::inputMethodEvent()도 참조하십시오 .

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

이 메서드는 입력 메서드가 장면의 프로퍼티 집합을 쿼리하여 주변 텍스트 및 리컨버전을 지원하는 복잡한 입력 메서드 작업을 지원하는 데 사용됩니다.

query 매개변수는 쿼리할 프로퍼티를 지정합니다.

QWidget::inputMethodQuery()도 참조하세요 .

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

현장에서 rectlayers 을 무효화하고 다시 그리기를 예약합니다. layers 에 캐시된 모든 콘텐츠는 무조건 무효화되고 다시 그려집니다.

이 함수 오버로드를 사용하여 씬의 배경 또는 전경에 대한 변경 사항을 QGraphicsScene 에 알릴 수 있습니다. 이 기능은 일반적으로 타일 기반 배경이 있는 씬에서 QGraphicsViewCacheBackground 을 활성화했을 때 변경 사항을 알리기 위해 사용됩니다.

예시:

QRectF TileScene::rectForTile(int x, int y) const
{
    // Return the rectangle for the tile at position (x, y).
    return QRectF(x * tileWidth, y * tileHeight, tileWidth, tileHeight);
}

void TileScene::setTile(int x, int y, const QPixmap &pixmap)
{
    // Sets or replaces the tile at position (x, y) with pixmap.
    if (x >= 0 && x < numTilesH && y >= 0 && y < numTilesV) {
        tiles[y][x] = pixmap;
        invalidate(rectForTile(x, y), BackgroundLayer);
    }
}

void TileScene::drawBackground(QPainter *painter, const QRectF &exposed)
{
    // Draws all tiles that intersect the exposed area.
    for (int y = 0; y < numTilesV; ++y) {
        for (int x = 0; x < numTilesH; ++x) {
            QRectF rect = rectForTile(x, y);
            if (exposed.intersects(rect))
                painter->drawPixmap(rect.topLeft(), tiles[y][x]);
        }
    }
}

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

QGraphicsView::resetCachedContent()도 참조하세요 .

void QGraphicsScene::invalidate(qreal x, qreal y, qreal w, qreal h, QGraphicsScene::SceneLayers layers = AllLayers)

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

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

bool QGraphicsScene::isActive() const

장면이 활성화된 경우(예: 활성화된 QGraphicsView 하나 이상에서 본 경우) true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

QGraphicsItem::isActive() 및 QWidget::isActiveWindow()도 참조하세요 .

QGraphicsItem *QGraphicsScene::itemAt(const QPointF &position, const QTransform &deviceTransform) const

지정된 position, 또는 이 위치에 항목이 없는 경우 nullptr 에서 가장 위에 표시되는 항목을 반환합니다.

deviceTransform 는 뷰에 적용되는 변환이며, 장면에 변환을 무시하는 항목이 포함된 경우 제공해야 합니다.

참고: 이 함수가 표시되는 것으로 간주되는 항목에 대한 정의는 items()를 참조하십시오.

items(), collidingItems() 및 Sorting참조하십시오 .

QGraphicsItem *QGraphicsScene::itemAt(qreal x, qreal y, const QTransform &deviceTransform) const

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

(x, y)로 지정된 위치에서 가장 위에 보이는 항목을 반환하거나, 이 위치에 항목이 없는 경우 nullptr 를 반환합니다.

deviceTransform 는 뷰에 적용되는 변환이며, 장면에 변환을 무시하는 항목이 포함된 경우 제공해야 합니다.

이 편의 함수는 itemAt(QPointF(x, y), deviceTransform) 을 호출하는 것과 동일합니다.

참고: 이 함수가 표시되는 것으로 간주되는 항목에 대한 정의는 items()를 참조하십시오.

QList<QGraphicsItem *> QGraphicsScene::items(Qt::SortOrder order = Qt::DescendingOrder) const

장면에 있는 모든 항목의 정렬된 목록을 반환합니다. order 스택 순서를 결정합니다.

addItem(), removeItem() 및 Sorting참조하세요 .

QList<QGraphicsItem *> QGraphicsScene::items(const QPointF &pos, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

mode 에 따라 지정된 pos 에 있는 모든 보이는 항목을 order 을 사용하여 정렬된 목록으로 반환합니다. 이 경우 "visible"은 isVisible()이 true, effectiveOpacity()가 0.0보다 큰 값(완전 투명)을 반환하고 상위 항목이 클리핑하지 않는 항목을 정의합니다.

mode 의 기본값은 Qt::IntersectsItemShape 이며, 정확한 모양이 pos 와 교차하는 모든 항목이 반환됩니다.

deviceTransform 는 뷰에 적용되는 변환이며, 장면에 변환을 무시하는 항목이 포함된 경우 제공해야 합니다.

itemAt() 및 Sorting참조하십시오 .

QList<QGraphicsItem *> QGraphicsScene::items(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

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

mode 에 따라 지정된 path 안에 있거나 과 교차하는 모든 보이는 항목을 order 을 사용하여 정렬된 목록으로 반환합니다. 이 경우 "visible"은 isVisible()이 true 을 반환하고, effectiveOpacity()가 0.0보다 큰 값(완전 투명)을 반환하며, 상위 항목이 해당 항목을 잘라내지 않는 항목을 정의합니다.

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

deviceTransform 는 뷰에 적용되는 변형이며, 장면에 변형을 무시하는 항목이 포함된 경우 제공해야 합니다.

itemAt() 및 Sorting참조하십시오 .

QList<QGraphicsItem *> QGraphicsScene::items(const QPolygonF &polygon, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

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

mode 에 따라 지정된 polygon 안에 있거나 과 교차하는 모든 보이는 항목을 order 을 사용하여 정렬된 목록으로 반환합니다. 이 경우 "visible"은 isVisible()이 true 을 반환하고, effectiveOpacity()가 0.0보다 큰 값(완전 투명)을 반환하며, 상위 항목이 해당 항목을 잘라내지 않는 항목을 정의합니다.

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

deviceTransform 는 뷰에 적용되는 변형이며, 장면에 변형을 무시하는 항목이 포함된 경우 제공해야 합니다.

itemAt() 및 Sorting참조하십시오 .

QList<QGraphicsItem *> QGraphicsScene::items(const QRectF &rect, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, Qt::SortOrder order = Qt::DescendingOrder, const QTransform &deviceTransform = QTransform()) const

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

mode 에 따라 지정된 rect 안에 있거나 과 교차하는 모든 보이는 항목을 order 을 사용하여 정렬된 목록으로 반환합니다. 이 경우 "visible"은 isVisible()이 true 을 반환하고, effectiveOpacity()가 0.0보다 큰 값(완전 투명)을 반환하며, 상위 항목이 해당 항목을 잘라내지 않는 항목을 정의합니다.

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

deviceTransform 는 뷰에 적용되는 변형이며, 장면에 변형을 무시하는 항목이 포함된 경우 제공해야 합니다.

itemAt() 및 Sorting참조하십시오 .

QList<QGraphicsItem *> QGraphicsScene::items(qreal x, qreal y, qreal w, qreal h, Qt::ItemSelectionMode mode, Qt::SortOrder order, const QTransform &deviceTransform = QTransform()) const

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

mode 에 따라 x, y, wh 에 정의된 사각형 안에 있거나 사각형과 교차하는 모든 보이는 항목을 order 을 사용하여 정렬된 목록으로 반환합니다. 이 경우 "visible"은 isVisible()이 true 을 반환하고 effectiveOpacity()가 0.0보다 큰 값(완전 투명)을 반환하며 부모 항목이 해당 항목을 잘라내지 않는 항목을 정의합니다.

deviceTransform 는 뷰에 적용되는 변환이며, 장면에 변환을 무시하는 항목이 포함된 경우 제공해야 합니다.

QRectF QGraphicsScene::itemsBoundingRect() const

씬에 있는 모든 항목의 경계 사각형을 계산하여 반환합니다. 이 함수는 모든 항목을 반복하여 작동하므로 큰 씬의 경우 속도가 느려질 수 있습니다.

sceneRect()도 참조하세요 .

[virtual protected] void QGraphicsScene::keyPressEvent(QKeyEvent *keyEvent)

이벤트 keyEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 키 누르기 이벤트를 수신할 수 있습니다. 기본 구현은 이벤트를 현재 포커스 항목으로 전달합니다.

QGraphicsItem::keyPressEvent() 및 focusItem()도 참조하세요 .

[virtual protected] void QGraphicsScene::keyReleaseEvent(QKeyEvent *keyEvent)

이벤트 keyEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 키 릴리스 이벤트를 수신할 수 있습니다. 기본 구현은 이벤트를 현재 포커스 항목으로 전달합니다.

QGraphicsItem::keyReleaseEvent() 및 focusItem()도 참조하세요 .

[virtual protected] void QGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *mouseEvent)

이벤트 mouseEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 씬에 대한 마우스 더블 클릭 이벤트를 수신할 수 있습니다.

누군가가 장면을 두 번 클릭하면 장면은 먼저 마우스 누르기 이벤트를 수신한 다음 릴리스 이벤트(즉, 클릭), 두 번 클릭 이벤트, 마지막으로 릴리스 이벤트를 수신합니다. 두 번 클릭 이벤트가 첫 번째 누름 및 릴리스 이벤트를 받은 항목과 다른 항목에 전달되는 경우, 해당 이벤트는 프레스 이벤트로 전달됩니다. 그러나 이 경우 트리플 클릭 이벤트는 더블 클릭 이벤트로 전달되지 않습니다.

기본 구현은 mousePressEvent()와 유사합니다.

참고: 이 함수에 의해 표시되는 항목에 대한 정의는 items()를 참조하세요.

QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseMoveEvent(), QGraphicsItem::mouseReleaseEvent() 및 QGraphicsItem::setAcceptedMouseButtons()도 참조하세요 .

QGraphicsItem *QGraphicsScene::mouseGrabberItem() const

현재 마우스 그래버 항목을 반환하거나, 현재 마우스를 잡는 항목이 없는 경우 nullptr 을 반환합니다. 마우스 그래버 항목은 장면으로 전송된 모든 마우스 이벤트를 수신하는 항목입니다.

항목은 마우스 누르기 이벤트를 수신하고 수락하면 마우스 그래버가 되며, 다음 이벤트 중 하나가 발생할 때까지 마우스 그래버 상태를 유지합니다:

  • 항목이 다른 버튼을 누르지 않은 상태에서 마우스 해제 이벤트를 수신하면 마우스 그래버 상태를 잃습니다.
  • 항목이 보이지 않게 되거나(즉, 누군가 item->setVisible(false))를 호출하거나(즉, 누군가 item->setEnabled(false))를 호출하는 등) 비활성화되면 마우스 그랩이 사라집니다.
  • 항목이 장면에서 제거되면 마우스 그랩이 사라집니다.

항목이 마우스 잡기를 잃으면 새 항목이 마우스를 잡을 때까지(즉, 새 항목이 마우스 누르기 이벤트를 수신할 때까지) 씬은 모든 마우스 이벤트를 무시합니다.

[virtual protected] void QGraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)

이벤트 mouseEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 장면에 대한 마우스 이동 이벤트를 수신할 수 있습니다.

기본 구현은 마우스 그래버 상태에 따라 달라집니다. 마우스 그래버 항목이 있는 경우 이벤트는 마우스 그래버로 전송됩니다. 현재 위치에 호버 이벤트를 받는 항목이 있으면 이벤트가 호버 이벤트로 변환되어 수락되고, 그렇지 않으면 무시됩니다.

QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseReleaseEvent(), QGraphicsItem::mouseDoubleClickEvent() 및 QGraphicsItem::setAcceptedMouseButtons()도 참조하세요 .

[virtual protected] void QGraphicsScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)

이벤트 mouseEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 씬에 대한 마우스 누르기 이벤트를 수신할 수 있습니다.

기본 구현은 씬의 상태에 따라 달라집니다. 마우스 그래버 항목이 있는 경우 이벤트는 마우스 그래버로 전송됩니다. 그렇지 않으면 이벤트에서 씬 위치에서 마우스 이벤트를 수신하는 가장 위에 보이는 항목으로 전달되며, 해당 항목이 즉시 마우스 그래버 항목이 됩니다.

장면의 지정된 위치에 항목이 없으면 선택 영역이 재설정되고 모든 포커스 항목이 입력 포커스를 잃은 다음 이벤트가 무시됩니다.

참고: 이 함수에 의해 표시되는 항목에 대한 정의는 items()를 참조하십시오.

QGraphicsItem::mousePressEvent() 및 QGraphicsItem::setAcceptedMouseButtons()도 참조하십시오 .

[virtual protected] void QGraphicsScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)

이벤트 mouseEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 장면에 대한 마우스 릴리스 이벤트를 수신할 수 있습니다.

기본 구현은 마우스 그래버 상태에 따라 달라집니다. 마우스 그래버가 없는 경우 이벤트는 무시됩니다. 그렇지 않으면 마우스 그래버 항목이 있는 경우 이벤트가 마우스 그래버로 전송됩니다. 이 마우스 릴리스가 마우스에서 마지막으로 누른 버튼을 나타내는 경우 마우스 그래버 항목은 마우스 그래브를 잃게 됩니다.

QGraphicsItem::mousePressEvent(), QGraphicsItem::mouseMoveEvent(), QGraphicsItem::mouseDoubleClickEvent() 및 QGraphicsItem::setAcceptedMouseButtons()도 참조하세요 .

void QGraphicsScene::removeItem(QGraphicsItem *item)

item 항목과 모든 하위 항목을 장면에서 제거합니다. item 의 소유권은 호출자에게 전달됩니다(즉, QGraphicsScene 은 삭제 시 더 이상 item 을 삭제하지 않습니다).

addItem()도 참조하세요 .

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

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

QGraphicsScene scene;
scene.addItem(...
...
QPrinter printer(QPrinter::HighResolution);
printer.setPaperSize(QPrinter::A4);

QPainter painter(&printer);
scene.render(&painter);

source 가 널 직사각형인 경우 이 함수는 sceneRect()를 사용하여 렌더링할 내용을 결정합니다. target 가 null rect인 경우 painter 의 페인트 장치의 치수가 사용됩니다.

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

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

[signal] void QGraphicsScene::sceneRectChanged(const QRectF &rect)

이 신호는 씬 직사각형이 변경될 때마다 QGraphicsScene 에서 발신합니다. rect 매개변수는 새 씬 사각형입니다.

QGraphicsView::updateSceneRect()도 참조하세요 .

QList<QGraphicsItem *> QGraphicsScene::selectedItems() const

현재 선택된 모든 항목의 목록을 반환합니다. 항목은 특정 순서 없이 반환됩니다.

setSelectionArea()도 참조하세요 .

QPainterPath QGraphicsScene::selectionArea() const

이전에 setSelectionArea()로 설정한 선택 영역을 반환하거나, 선택 영역이 설정되지 않은 경우 빈 QPainterPath 을 반환합니다.

setSelectionArea()도 참조하세요 .

[signal] void QGraphicsScene::selectionChanged()

이 신호는 선택 항목이 변경될 때마다 QGraphicsScene 에서 전송됩니다. selectedItems ()를 호출하여 선택한 항목의 새 목록을 가져올 수 있습니다.

항목이 선택 또는 선택 해제되거나 선택 영역이 설정, 지워지거나 기타 방식으로 변경되거나 미리 선택된 항목이 장면에 추가되거나 선택된 항목이 장면에서 제거될 때마다 선택 항목이 변경됩니다.

QGraphicsScene 그룹 선택 작업의 경우 이 신호를 한 번만 방출합니다. 예를 들어 선택 영역을 설정하거나 QGraphicsItemGroup 을 선택 또는 선택 취소하거나 선택한 여러 항목이 포함된 상위 항목을 장면에서 추가 또는 제거하는 경우, selectionChanged()는 각 항목에 대해 한 번이 아니라 작업이 완료된 후 한 번만 발생합니다(각 항목마다 한 번이 아닌).

setSelectionArea(), selectedItems() 및 QGraphicsItem::setSelected()도 참조하세요 .

bool QGraphicsScene::sendEvent(QGraphicsItem *item, QEvent *event)

가능한 이벤트 필터를 통해 event 이벤트를 item 항목으로 전송합니다.

이벤트는 항목이 활성화된 경우에만 전송됩니다.

이벤트가 필터링되었거나 항목이 비활성화된 경우 false 을 반환합니다. 그렇지 않으면 이벤트 핸들러에서 반환된 값을 반환합니다.

QGraphicsItem::sceneEvent() 및 QGraphicsItem::sceneEventFilter()도 참조하세요 .

void QGraphicsScene::setActivePanel(QGraphicsItem *item)

이 장면의 항목이어야 하는 item 을 활성화합니다. item 에 0을 전달할 수도 있으며, 이 경우 QGraphicsScene 은 현재 활성화된 모든 패널을 비활성화합니다.

장면이 현재 비활성 상태인 경우 item 는 장면이 활성화될 때까지 비활성 상태로 유지됩니다(또는 itemnullptr 인 경우 항목이 활성화되지 않음).

activePanel(), isActive() 및 QGraphicsItem::isActive()도 참조하세요 .

void QGraphicsScene::setActiveWindow(QGraphicsWidget *widget)

이 장면에서 위젯이어야 하는 widget 을 활성화합니다. widget 에 0을 전달할 수도 있으며, 이 경우 QGraphicsScene 은 현재 활성화된 모든 창을 비활성화합니다.

activeWindow() 및 QGraphicsWidget::isActiveWindow()도 참조하세요 .

void QGraphicsScene::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)

씬에 QFocusEvent 을 보내고 focusReason 을 이유로 전달하여 씬에 포커스를 설정합니다. 이전에 항목에 포커스가 있는 동안 포커스를 잃었던 장면이 다시 포커스를 얻으면 마지막 포커스 항목이 focusReason 을 이유로 하여 포커스를 받습니다.

씬에 이미 포커스가 있는 경우 이 함수는 아무 작업도 수행하지 않습니다.

hasFocus(), clearFocus() 및 setFocusItem()도 참조하세요 .

void QGraphicsScene::setFocusItem(QGraphicsItem *item, Qt::FocusReason focusReason = Qt::OtherFocusReason)

이전에 초점이 있었던 모든 항목에서 초점을 제거한 후 장면의 초점 항목을 item, 초점 이유 focusReason 로 설정합니다.

itemnullptr 이거나 포커스를 받지 않거나(즉, QGraphicsItem::ItemIsFocusable 플래그가 활성화되지 않은 경우) 보이지 않거나 활성화되지 않은 경우 이 함수는 이전 포커스 항목에서 포커스만 제거합니다.

항목이 nullptr 이 아니고 장면에 현재 포커스가 없는 경우(즉, hasFocus()가 false 를 반환하는 경우) 이 함수는 자동으로 setFocus()를 호출합니다.

focusItem(), hasFocus() 및 setFocus()도 참조하십시오 .

void QGraphicsScene::setSelectionArea(const QPainterPath &path, const QTransform &deviceTransform)

선택 영역을 path 로 설정합니다. 이 영역 안의 모든 항목은 즉시 선택되고 바깥의 모든 항목은 선택 해제됩니다. selectedItems ()를 호출하여 선택한 모든 항목의 목록을 가져올 수 있습니다.

deviceTransform 는 뷰에 적용되는 변환이며, 장면에 변환을 무시하는 항목이 포함된 경우 제공해야 합니다.

항목을 선택하려면 선택 가능 (QGraphicsItem::ItemIsSelectable)으로 표시해야 합니다.

clearSelection() 및 selectionArea()도 참조하십시오 .

void QGraphicsScene::setSelectionArea(const QPainterPath &path, Qt::ItemSelectionOperation selectionOperation = Qt::ReplaceSelection, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape, const QTransform &deviceTransform = QTransform())

이 기능은 과부하된 기능입니다.

mode 을 사용하여 선택 영역을 path 으로 설정하여 선택 영역에 항목이 포함되는지 확인합니다.

deviceTransform 는 뷰에 적용되는 변환이며, 장면에 변환을 무시하는 항목이 포함된 경우 제공해야 합니다.

selectionOperation 는 현재 선택된 항목으로 수행할 작업을 결정합니다.

clearSelection() 및 selectionArea()도 참조하십시오 .

void QGraphicsScene::setStyle(QStyle *style)

씬의 스타일을 style 로 설정하거나 바꾸고 스타일을 이 씬에 다시 부모로 지정합니다. 이전에 할당된 모든 스타일은 삭제됩니다. 씬의 기본 스타일은 QApplication::style()이며 씬의 모든 QGraphicsWidget 항목에 대한 기본값으로 사용됩니다.

이 함수를 직접 호출하거나 QApplication::setStyle()를 호출하여 간접적으로 스타일을 변경하면 씬에 명시적으로 할당된 스타일이 없는 모든 위젯의 스타일이 자동으로 업데이트됩니다.

stylenullptr 인 경우 QGraphicsSceneQApplication::style()로 되돌아갑니다.

style()도 참조하세요 .

QStyle *QGraphicsScene::style() const

씬의 스타일을 반환하거나 씬에 스타일이 명시적으로 할당되지 않은 경우 QApplication::style()와 동일한 스타일을 반환합니다.

setStyle()도 참조하세요 .

[slot] void QGraphicsScene::update(const QRectF &rect = QRectF())

장면에서 rect 영역을 다시 그리도록 예약합니다.

sceneRect() 및 changed()도 참조하세요 .

void QGraphicsScene::update(qreal x, qreal y, qreal w, qreal h)

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

이 함수는 update(QRectF(x, y, w, h))를 호출하는 것과 동일합니다;

QList<QGraphicsView *> QGraphicsScene::views() const

이 장면을 표시하는 모든 뷰의 목록을 반환합니다.

QGraphicsView::scene()도 참조하세요 .

[virtual protected] void QGraphicsScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)

이벤트 wheelEvent 에 대한 이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 씬에 대한 마우스 휠 이벤트를 수신할 수 있습니다.

기본적으로 이벤트는 커서 아래에서 가장 위에 보이는 항목으로 전달됩니다. 무시하면 이벤트는 이벤트가 수락되거나 장면에 도달할 때까지 그 아래 항목으로 전파되고, 다시 그 아래 항목으로 전파됩니다. 이벤트를 수락하는 항목이 없으면 무시됩니다.

참고: 이 함수에 의해 표시되는 항목에 대한 정의는 items()를 참조하세요.

QGraphicsItem::wheelEvent()도 참조하세요 .

qreal QGraphicsScene::width() const

이 편의 함수는 sceneRect().width()를 호출하는 것과 동일합니다.

height()도 참조하세요 .

© 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.