QGraphicsItem Class
QGraphicsItem 클래스는 QGraphicsScene...에 있는 모든 그래픽 항목의 기본 클래스입니다.. ..
헤더: | #include <QGraphicsItem> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
qmake: | QT += widgets |
에 의해 상속되었습니다: | QAbstractGraphicsShapeItem, QGraphicsItemGroup, QGraphicsLineItem, QGraphicsObject, 그리고 QGraphicsPixmapItem |
공용 타입
enum | CacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache } |
enum | GraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, …, ItemScenePositionHasChanged } |
enum | GraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, …, ItemContainsChildrenInShape } |
flags | GraphicsItemFlags |
enum | PanelModality { NonModal, PanelModal, SceneModal } |
enum | anonymous { Type, UserType } |
공용 함수
QGraphicsItem(QGraphicsItem *부모 = nullptr) | |
가상 | ~QGraphicsItem() |
bool | acceptDrops() const |
bool | acceptHoverEvents() const |
bool | acceptTouchEvents() const |
Qt::MouseButtons | acceptedMouseButtons() const |
가상 void | advance(int phase) |
가상 QRectF | boundingRect() const = 0 |
QRegion | boundingRegion(const QTransform &itemToDeviceTransform) const |
qreal | boundingRegionGranularity() const |
QGraphicsItem::CacheMode | cacheMode() const |
QList<QGraphicsItem *> | childItems() const |
QRectF | childrenBoundingRect() const |
void | clearFocus() |
QPainterPath | clipPath() const |
가상 불 | collidesWithItem(const QGraphicsItem *다른, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
가상 bool | collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
QList<QGraphicsItem *> | collidingItems(Qt::ItemSelectionMode 모드 = Qt::IntersectsItemShape) const |
QGraphicsItem * | commonAncestorItem(const QGraphicsItem *다른) const |
가상 불 | contains(const QPointF &point) const |
QCursor | cursor() const |
QVariant | data(int 키) const |
QTransform | deviceTransform(const QTransform &viewportTransform) const |
qreal | effectiveOpacity() const |
void | ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50) |
void | ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50) |
bool | filtersChildEvents() const |
QGraphicsItem::GraphicsItemFlags | flags() const |
QGraphicsItem * | focusItem() const |
QGraphicsItem * | focusProxy() const |
void | grabKeyboard() |
void | grabMouse() |
QGraphicsEffect * | graphicsEffect() const |
QGraphicsItemGroup * | group() const |
bool | hasCursor() const |
bool | hasFocus() const |
void | hide() |
Qt::InputMethodHints | inputMethodHints() const |
void | installSceneEventFilter(QGraphicsItem *필터 항목) |
bool | isActive() const |
bool | isAncestorOf(const QGraphicsItem *child) const |
bool | isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const |
bool | isClipped() const |
bool | isEnabled() const |
bool | isObscured(const QRectF &rect = QRectF()) const |
bool | isObscured(qreal x, qreal y, qreal w, qreal h) const |
가상 불 | isObscuredBy(const QGraphicsItem *item) const |
bool | isPanel() const |
bool | isSelected() const |
bool | isUnderMouse() const |
bool | isVisible() const |
bool | isVisibleTo(const QGraphicsItem *부모) const |
bool | isWidget() const |
bool | isWindow() const |
QTransform | itemTransform(const QGraphicsItem *다른, bool *ok = nullptr) const |
QPainterPath | mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const |
QPointF | mapFromItem(const QGraphicsItem *item, const QPointF &point) const |
QPolygonF | mapFromItem(const QGraphicsItem *항목, const QPolygonF &polygon) const |
QPolygonF | mapFromItem(const QGraphicsItem *item, const QRectF &rect) const |
QPolygonF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
QPointF | mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const |
QPainterPath | mapFromParent(const QPainterPath &path) const |
QPointF | mapFromParent(const QPointF &point) const |
QPolygonF | mapFromParent(const QPolygonF &polygon) const |
QPolygonF | mapFromParent(const QRectF &rect) const |
QPolygonF | mapFromParent(qreal x, qreal y, qreal w, qreal h) const |
QPointF | mapFromParent(qreal x, qreal y) const |
QPainterPath | mapFromScene(const QPainterPath &path) const |
QPointF | mapFromScene(const QPointF &point) const |
QPolygonF | mapFromScene(const QPolygonF &polygon) const |
QPolygonF | mapFromScene(const QRectF &rect) const |
QPolygonF | mapFromScene(큐리얼 X, 큐리얼 Y, 큐리얼 W, 큐리얼 H) const |
QPointF | mapFromScene(qreal x, qreal y) const |
QRectF | mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const |
QRectF | mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
QRectF | mapRectFromParent(const QRectF &rect) const |
QRectF | mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const |
QRectF | mapRectFromScene(const QRectF &rect) const |
QRectF | mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const |
QRectF | mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const |
QRectF | mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
QRectF | mapRectToParent(const QRectF &rect) const |
QRectF | mapRectToParent(qreal x, qreal y, qreal w, qreal h) const |
QRectF | mapRectToScene(const QRectF &rect) const |
QRectF | mapRectToScene(qreal x, qreal y, qreal w, qreal h) const |
QPainterPath | mapToItem(const QGraphicsItem *item, const QPainterPath &path) const |
QPointF | mapToItem(const QGraphicsItem *item, const QPointF &point) const |
QPolygonF | mapToItem(const QGraphicsItem *항목, const QPolygonF &polygon) const |
QPolygonF | mapToItem(const QGraphicsItem *item, const QRectF &rect) const |
QPolygonF | mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const |
QPointF | mapToItem(const QGraphicsItem *item, qreal x, qreal y) const |
QPainterPath | mapToParent(const QPainterPath &path) const |
QPointF | mapToParent(const QPointF &point) const |
QPolygonF | mapToParent(const QPolygonF &polygon) const |
QPolygonF | mapToParent(const QRectF &rect) const |
QPolygonF | mapToParent(큐리얼 X, 큐리얼 Y, 큐리얼 W, 큐리얼 H) const |
QPointF | mapToParent(qreal x, qreal y) const |
QPainterPath | mapToScene(const QPainterPath &path) const |
QPointF | mapToScene(const QPointF &point) const |
QPolygonF | mapToScene(const QPolygonF &polygon) const |
QPolygonF | mapToScene(const QRectF &rect) const |
QPolygonF | mapToScene(큐리얼 X, 큐리얼 Y, 큐리얼 W, 큐리얼 H) const |
QPointF | mapToScene(qreal x, qreal y) const |
void | moveBy(qreal dx, qreal dy) |
qreal | opacity() const |
가상 QPainterPath | opaqueArea() const |
가상 void | paint(QPainter *페인터, const QStyleOptionGraphicsItem *옵션, QWidget *위젯 = nullptr) = 0 |
QGraphicsItem * | panel() const |
QGraphicsItem::PanelModality | panelModality() const |
QGraphicsItem * | parentItem() const |
QGraphicsObject * | parentObject() const |
QGraphicsWidget * | parentWidget() const |
QPointF | pos() const |
void | removeSceneEventFilter(QGraphicsItem *필터 아이템) |
void | resetTransform() |
qreal | rotation() const |
qreal | scale() const |
QGraphicsScene * | scene() const |
QRectF | sceneBoundingRect() const |
QPointF | scenePos() const |
QTransform | sceneTransform() const |
void | scroll(qreal dx, qreal dy, const QRectF &rect = QRectF()) |
void | setAcceptDrops(bool on) |
void | setAcceptHoverEvents(bool enabled) |
void | setAcceptTouchEvents(bool enabled) |
void | setAcceptedMouseButtons(Qt::MouseButtons 버튼) |
void | setActive(bool active) |
void | setBoundingRegionGranularity(qreal 세분성) |
void | setCacheMode(QGraphicsItem::CacheMode 모드, const QSize &logicalCacheSize = QSize()) |
void | setCursor(const QCursor &cursor) |
void | setData(int key, const QVariant &value) |
void | setEnabled(bool enabled) |
void | setFiltersChildEvents(bool 활성화) |
void | setFlag(QGraphicsItem::GraphicsItemFlag 플래그, bool enabled = true) |
void | setFlags(QGraphicsItem::GraphicsItemFlags 플래그) |
void | setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason) |
void | setFocusProxy(QGraphicsItem * 항목) |
void | setGraphicsEffect(QGraphicsEffect *효과) |
void | setGroup(QGraphicsItemGroup *그룹) |
void | setInputMethodHints(Qt::InputMethodHints 힌트) |
void | setOpacity(Qreal 불투명도) |
void | setPanelModality(QGraphicsItem::PanelModality 패널 모달리티) |
void | setParentItem(QGraphicsItem * newParent) |
void | setPos(const QPointF &pos) |
void | setPos(qreal x, qreal y) |
void | setRotation(qreal 각도) |
void | setScale(큐리얼 계수) |
void | setSelected( 선택된 불) |
void | setToolTip(const QString &toolTip) |
void | setTransform(const QTransform &matrix, bool 결합 = false) |
void | setTransformOriginPoint(const QPointF &origin) |
void | setTransformOriginPoint(qreal x, qreal y) |
void | setTransformations(const QList<QGraphicsTransform *> &transformations) |
void | setVisible(bool visible) |
void | setX(qreal x) |
void | setY(qreal y) |
void | setZValue(qreal z) |
가상 QPainterPath | shape() const |
void | show() |
void | stackBefore(const QGraphicsItem * 형제) |
QGraphicsObject * | toGraphicsObject() |
const QGraphicsObject * | toGraphicsObject() const |
QString | toolTip() const |
QGraphicsItem * | topLevelItem() const |
QGraphicsWidget * | topLevelWidget() const |
QTransform | transform() const |
QPointF | transformOriginPoint() const |
QList<QGraphicsTransform *> | transformations() const |
가상 int | type() const |
void | ungrabKeyboard() |
void | ungrabMouse() |
void | unsetCursor() |
void | update(const QRectF &rect = QRectF()) |
void | update(qreal x, qreal y, qreal width, qreal height) |
QGraphicsWidget * | window() const |
qreal | x() const |
qreal | y() const |
qreal | zValue() const |
보호 함수
virtual void | contextMenuEvent(QGraphicsSceneContextMenuEvent *event) |
virtual void | dragEnterEvent(QGraphicsSceneDragDropEvent *event) |
virtual void | dragLeaveEvent(QGraphicsSceneDragDropEvent *event) |
virtual void | dragMoveEvent(QGraphicsSceneDragDropEvent *event) |
virtual void | dropEvent(QGraphicsSceneDragDropEvent *event) |
virtual void | focusInEvent(QFocusEvent *event) |
virtual void | focusOutEvent(QFocusEvent *event) |
virtual void | hoverEnterEvent(QGraphicsSceneHoverEvent *event) |
virtual void | hoverLeaveEvent(QGraphicsSceneHoverEvent *event) |
virtual void | hoverMoveEvent(QGraphicsSceneHoverEvent *event) |
virtual void | inputMethodEvent(QInputMethodEvent *event) |
virtual QVariant | inputMethodQuery(Qt::InputMethodQuery query) const |
virtual QVariant | itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value) |
virtual void | keyPressEvent(QKeyEvent *event) |
virtual void | keyReleaseEvent(QKeyEvent *event) |
virtual void | mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) |
virtual void | mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
virtual void | mousePressEvent(QGraphicsSceneMouseEvent *event) |
virtual void | mouseReleaseEvent(QGraphicsSceneMouseEvent *event) |
void | prepareGeometryChange() |
virtual bool | sceneEvent(QEvent *event) |
virtual bool | sceneEventFilter(QGraphicsItem *watched, QEvent *event) |
void | updateMicroFocus() |
virtual void | wheelEvent(QGraphicsSceneWheelEvent *event) |
관련 비회원
T | qgraphicsitem_cast(QGraphicsItem *item) |
상세 설명
자신만의 커스텀 아이템을 작성하기 위한 가벼운 기반을 제공합니다. 여기에는 아이템의 지오메트리, 충돌 감지, 페인팅 구현 및 이벤트 핸들러를 통한 아이템 상호 작용을 정의하는 것이 포함됩니다. QGraphicsItem은 그래픽스 뷰 프레임워크의 일부입니다.
편의를 위해 Qt는 가장 일반적인 모양에 대한 표준 그래픽 항목 세트를 제공합니다. 이들은 다음과 같습니다:
- QGraphicsEllipseItem 타원 항목 제공
- QGraphicsLineItem 선 항목 제공
- QGraphicsPathItem 임의의 경로 항목 제공
- QGraphicsPixmapItem 픽스맵 항목 제공
- QGraphicsPolygonItem 다각형 항목 제공
- QGraphicsRectItem 직사각형 항목을 제공합니다.
- QGraphicsSimpleTextItem 간단한 텍스트 레이블 항목 제공
- QGraphicsTextItem 고급 텍스트 브라우저 항목 제공
항목의 모든 기하학적 정보는 로컬 좌표계를 기반으로 합니다. 항목의 위치인 pos()는 상위 좌표로 위치를 반환하므로 로컬 좌표에서 작동하지 않는 유일한 함수입니다. 그래픽 보기 좌표계에 좌표계에 대한 자세한 설명이 나와 있습니다.
setVisible()를 호출하여 항목의 표시 여부(즉, 그려짐, 이벤트 수락)를 설정할 수 있습니다. 항목을 숨기면 해당 항목의 하위 항목도 숨겨집니다. 마찬가지로 setEnabled()를 호출하여 항목을 활성화 또는 비활성화할 수 있습니다. 항목을 비활성화하면 해당 항목의 모든 하위 항목도 비활성화됩니다. 기본적으로 항목은 모두 표시 및 활성화되어 있습니다. 항목의 선택 여부를 전환하려면 먼저 ItemIsSelectable 플래그를 설정하여 선택을 활성화한 다음 setSelected()을 호출합니다. 일반적으로 선택은 사용자 상호 작용의 결과로 장면에 의해 토글됩니다.
자체 그래픽 항목을 작성하려면 먼저 QGraphicsItem의 서브클래스를 만든 다음, 항목이 칠한 영역의 추정치를 반환하는 boundingRect()와 실제 그림을 구현하는 paint()의 두 가지 순수 가상 공용 함수를 구현하는 것으로 시작하면 됩니다. 예를 들어
class SimpleItem : public QGraphicsItem { public: QRectF boundingRect() const override { qreal penWidth = 1; return QRectF(-10 - penWidth / 2, -10 - penWidth / 2, 20 + penWidth, 20 + penWidth); } void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override { painter->drawRoundedRect(-10, -10, 20, 20, 5, 5); } };
boundingRect() 함수는 다양한 용도로 사용됩니다. QGraphicsScene 은 boundingRect()을 기반으로 항목 색인을 생성하고, QGraphicsView 은 보이지 않는 항목을 컬링하고 겹치는 항목을 그릴 때 재구성해야 하는 영역을 결정하는 데 모두 사용합니다. 또한 QGraphicsItem의 충돌 감지 메커니즘은 boundingRect()를 사용하여 효율적인 컷오프를 제공합니다. collidesWithItem ()의 세분화된 충돌 알고리즘은 shape()을 호출하여 항목 모양의 정확한 윤곽을 QPainterPath 로 반환하는 것을 기반으로 합니다.
QGraphicsScene 는 모든 항목 boundingRect() 및 shape()이 알림이 없는 한 변경되지 않은 상태로 유지될 것으로 예상합니다. 아이템의 지오메트리를 어떤 식으로든 변경하려면 먼저 prepareGeometryChange()를 호출하여 QGraphicsScene 이 장부를 업데이트하도록 허용해야 합니다.
충돌 감지는 두 가지 방법으로 수행할 수 있습니다:
- shape()를 다시 구현하여 아이템의 정확한 모양을 반환하고 collidesWithItem()의 기본 구현을 사용하여 모양과 모양의 교차를 수행합니다. 도형이 복잡한 경우 비용이 다소 많이 들 수 있습니다.
- collidesWithItem()를 다시 구현하여 사용자 지정 항목 및 도형 충돌 알고리즘을 제공하세요.
contains() 함수를 호출하여 항목에 점이 포함되어 있는지 여부를 확인할 수 있습니다. 이 함수는 항목에서 다시 구현할 수도 있습니다. contains ()의 기본 동작은 shape() 호출을 기반으로 합니다.
항목은 다른 항목을 포함할 수 있으며 다른 항목에 의해 포함될 수도 있습니다. 모든 항목에는 상위 항목과 하위 항목 목록이 있을 수 있습니다. 항목에 상위 항목이 없는 경우 항목의 위치는 상위 좌표(즉, 상위의 로컬 좌표)에 있습니다. 상위 항목은 위치와 변환을 모든 하위 항목에 전파합니다.
변형
Q그래픽 항목은 기본 위치인 pos() 외에도 투영 변환을 지원합니다. 항목의 변형을 변경하는 방법에는 여러 가지가 있습니다. 간단한 변환의 경우 setRotation() 또는 setScale() 편의 함수 중 하나를 호출하거나 변환 매트릭스를 setTransform()에 전달할 수 있습니다. 고급 변환 제어의 경우 setTransformations()를 호출하여 여러 개의 결합된 변환을 설정하는 옵션도 있습니다.
항목 변형은 부모에서 자식으로 누적되므로 부모와 자식 항목이 모두 90도 회전하면 자식의 총 변형은 180도가 됩니다. 마찬가지로 항목의 부모가 원래 크기의 2배로 확대되면 자식도 2배로 커집니다. 항목의 변형은 자체 로컬 지오메트리에 영향을 주지 않으며 모든 지오메트리 함수(예: contains(), update() 및 모든 매핑 함수)는 여전히 로컬 좌표에서 작동합니다. 편의를 위해 QGraphicsItem은 항목의 전체 변환 행렬(해당 위치 및 모든 부모 위치 및 변환 포함)을 반환하는 sceneTransform() 함수와 장면 좌표로 위치를 반환하는 scenePos() 함수를 제공합니다. 항목의 행렬을 재설정하려면 resetTransform()를 호출합니다.
특정 변환 연산은 적용되는 순서에 따라 다른 결과를 생성합니다. 예를 들어 변환의 크기를 조정한 다음 회전하면 변환을 먼저 회전한 경우와 다른 결과를 얻을 수 있습니다. 그러나 QGraphicsItem에서 변환 속성을 설정한 순서는 결과 변환에 영향을 주지 않으며, 항상 고정된 정의된 순서로 속성을 적용합니다:
- 항목의 기본 변환이 적용됩니다 (transform()).
- 항목의 변형 목록이 순서대로 적용됩니다 (transformations()).
- 항목이 변형 원점을 기준으로 회전됩니다(rotation(), transformOriginPoint()).
- 항목의 변형 원점을 기준으로 항목의 크기가 조정됩니다 (scale(), transformOriginPoint()).
페인팅
paint() 함수는 QGraphicsView 에 의해 호출되어 항목의 내용을 칠합니다. 항목에는 자체 배경이나 기본 채우기가 없으며, 이 함수에서 명시적으로 칠하지 않은 모든 영역을 통해 항목 뒤에 있는 것이 무엇이든 빛나게 됩니다. update ()를 호출하여 다시 칠해야 하는 사각형을 선택적으로 전달하여 다시 칠을 예약할 수 있습니다. 항목이 뷰에 표시되는지 여부에 따라 항목이 다시 칠해지거나 칠해지지 않을 수 있으며, QGraphicsItem에는 QWidget::repaint()와 동등한 함수가 없습니다.
항목은 뷰에서 부모 항목부터 시작하여 오름차순으로 자식을 그리는 방식으로 그려집니다. setZValue ()를 호출하여 항목의 누적 순서를 설정하고 zValue()를 호출하여 테스트할 수 있으며, 이 경우 z값이 낮은 항목이 높은 항목보다 먼저 그려집니다. 쌓기 순서는 형제 항목에 적용되며, 부모 항목은 항상 자식 항목보다 먼저 그려집니다.
정렬
모든 항목은 정의되고 안정된 순서로 그려지며, 이 순서에 따라 장면을 클릭할 때 마우스 입력을 먼저 받을 항목이 결정됩니다. 일반적으로 항목은 장면의 논리적 구조에 따라 "자연스러운 순서"를 따르기 때문에 정렬에 대해 걱정할 필요가 없습니다.
항목의 자식은 부모 항목 위에 쌓이고 형제 항목은 삽입 순서대로(즉, 장면에 추가되거나 같은 부모에 추가된 순서대로) 쌓입니다. 항목 A를 추가한 다음 B를 추가하면 B가 A 위에 오게 되고, 그 다음 C를 추가하면 항목의 스택 순서는 A, B, C가 됩니다.
이 예는 드래그 앤 드롭 로봇 예제에서 로봇의 모든 팔다리를 쌓는 순서를 보여줍니다. 몸통은 루트 아이템이므로(다른 모든 아이템은 몸통의 자식 또는 하위 아이템입니다) 가장 먼저 그려집니다. 다음으로 몸통의 자식 목록의 첫 번째 항목이므로 머리가 그려집니다. 그런 다음 왼쪽 위쪽 팔이 그려집니다. 아래 팔은 위 팔의 자식이기 때문에 아래 팔을 그린 다음 위 팔의 다음 형제인 오른쪽 위 팔을 그리는 식으로 그리면 됩니다.
고급 사용자의 경우 항목 정렬 방식을 변경할 수 있는 방법이 있습니다:
- 항목에 setZValue()를 호출하여 다른 형제 항목의 위나 아래에 명시적으로 쌓도록 할 수 있습니다. 항목의 기본 Z 값은 0입니다. 같은 Z 값을 가진 항목은 삽입 순서에 따라 쌓입니다.
- stackBefore()를 호출하여 하위 항목 목록을 다시 정렬할 수 있습니다. 이렇게 하면 삽입 순서가 직접 수정됩니다.
- ItemStacksBehindParent 플래그를 설정하여 자식 항목을 부모 항목 뒤에 쌓을 수 있습니다.
두 형제 항목의 스택 순서는 각 항목의 자식 및 하위 항목에도 적용됩니다. 따라서 한 항목이 다른 항목 위에 있으면 모든 자식 항목도 다른 항목의 모든 자식 항목 위에 놓이게 됩니다.
이벤트
QGraphicsItem은 가상 함수 sceneEvent()를 통해 QGraphicsScene 에서 이벤트를 수신합니다. 이 함수는 가장 일반적인 이벤트를 편의 이벤트 핸들러 집합에 배포합니다:
- contextMenuEvent()는 컨텍스트 메뉴 이벤트를 처리합니다.
- focusInEvent() 및 focusOutEvent()는 포커스 인/아웃 이벤트를 처리합니다.
- hoverEnterEvent(), hoverMoveEvent() 및 hoverLeaveEvent()는 마우스오버 입력, 이동 및 종료 이벤트를 처리합니다.
- inputMethodEvent()는 접근성 지원을 위해 입력 이벤트를 처리합니다.
- keyPressEvent() 및 keyReleaseEvent()는 키 누르기 및 놓기 이벤트를 처리합니다.
- mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() 및 mouseDoubleClickEvent()는 마우스 누르기, 이동, 놓기, 클릭 및 더블 클릭 이벤트를 처리합니다.
이벤트 필터를 설치하여 다른 항목에 대한 이벤트를 필터링할 수 있습니다. 이 기능은 QObject 의 서브클래스에서만 작동하는 Qt의 일반 이벤트 필터( QObject::installEventFilter() 참조)와는 별개입니다. installSceneEventFilter()를 호출하여 다른 항목의 이벤트 필터로 항목을 설치하면 필터링된 이벤트가 가상 함수 sceneEventFilter()에 의해 수신됩니다. removeSceneEventFilter ()를 호출하여 항목 이벤트 필터를 제거할 수 있습니다.
사용자 지정 데이터
때로는 사용자 정의 항목이든 표준 항목이든 항목에 사용자 정의 데이터를 등록하는 것이 유용할 때가 있습니다. 모든 항목에서 setData()를 호출하여 키-값 쌍(키는 정수, 값은 QVariant)을 사용하여 데이터를 저장할 수 있습니다. 항목에서 사용자 지정 데이터를 가져오려면 data()를 호출합니다. 이 기능은 Qt 자체에는 전혀 영향을 미치지 않으며 사용자의 편의를 위해 제공됩니다.
QGraphicsScene, QGraphicsView, 그래픽 뷰 프레임워크도참조하세요 .
멤버 유형 문서
enum QGraphicsItem::CacheMode
이 열거형은 QGraphicsItem 의 캐시 모드를 설명합니다. 캐시는 화면 밖의 픽셀 버퍼에 할당하고 렌더링하여 렌더링 속도를 높이는 데 사용되며, 항목에 다시 그리기가 필요할 때 재사용할 수 있습니다. 일부 페인트 장치의 경우 캐시가 그래픽 메모리에 직접 저장되므로 렌더링 속도가 매우 빠릅니다.
상수 | 값 | 설명 |
---|---|---|
QGraphicsItem::NoCache | 0 | 기본값으로, 모든 항목 캐싱이 비활성화됩니다. QGraphicsItem::paint()는 항목을 다시 그려야 할 때마다 호출됩니다. |
QGraphicsItem::ItemCoordinateCache | 1 | 항목의 논리적(로컬) 좌표계에 대해 캐싱이 활성화됩니다. QGraphicsItem 은 구성 가능한 크기/해상도의 오프스크린 픽셀 버퍼를 생성하여 QGraphicsItem::setCacheMode()에 전달할 수 있습니다. 렌더링 품질은 일반적으로 캐시의 해상도와 아이템 변환에 따라 저하됩니다. 아이템이 처음 다시 그려지면 캐시에 렌더링되고 이후 노출될 때마다 캐시가 재사용됩니다. 항목이 변형될 때도 캐시가 재사용됩니다. 캐시의 해상도를 조정하려면 setCacheMode()를 다시 호출하면 됩니다. |
QGraphicsItem::DeviceCoordinateCache | 2 | 캐시는 장치 좌표의 페인트 장치 수준에서 활성화됩니다. 이 모드는 이동은 가능하지만 회전, 크기 조정 또는 전단이 불가능한 아이템에 적합합니다. 아이템이 직접 또는 간접적으로 변형되면 캐시가 자동으로 재생성됩니다. ItemCoordinateCacheMode와 달리 DeviceCoordinateCache는 항상 최대 품질로 렌더링합니다. |
QGraphicsItem::setCacheMode()도 참조하세요 .
enum QGraphicsItem::GraphicsItemChange
이 열거형은 QGraphicsItem::itemChange()에 의해 알림이 전송되는 상태 변경 사항을 설명합니다. 알림은 상태가 변경될 때 전송되며 경우에 따라 조정할 수 있습니다(자세한 내용은 각 변경 사항에 대한 문서를 참조하세요).
참고: 특정 함수 호출로 인해 원치 않는 재귀가 발생할 수 있으므로 itemChange() 내에서 QGraphicsItem 자체에서 함수를 호출할 때 주의하세요. 예를 들어 itemChange()에서 setPos() 함수를 호출하면 다시 itemChange(ItemPositionChange)를 호출하므로 ItemPositionChange 알림에서 setPos()를 호출할 수 없습니다. 대신 itemChange()에서 조정된 새 위치를 반환할 수 있습니다.
상수 | 값 | 설명 |
---|---|---|
QGraphicsItem::ItemEnabledChange | 3 | 항목의 활성화 상태가 변경됩니다. 항목이 현재 활성화되어 있으면 비활성화되고, 그 반대의 경우도 마찬가지입니다. 값 인수는 새로운 활성화 상태(즉, 참 또는 거짓)입니다. 이 알림이 전달될 때 itemChange()에서 setEnabled()를 호출하지 마세요. 대신 itemChange()에서 새 상태를 반환할 수 있습니다. |
QGraphicsItem::ItemEnabledHasChanged | 13 | 항목의 활성화 상태가 변경되었습니다. 값 인수는 새로운 활성화 상태(즉, 참 또는 거짓)입니다. 이 알림이 전달되므로 itemChange()에서 setEnabled()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemPositionChange | 0 | 항목의 위치가 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 로컬 위치가 부모를 기준으로 변경될 때(즉, setPos() 또는 moveBy() 호출의 결과로) 전송됩니다. 값 인수는 새 위치(즉, QPointF)입니다. pos ()를 호출하여 원래 위치를 가져올 수 있습니다. 이 알림이 전달될 때 itemChange()에서 setPos() 또는 moveBy()을 호출하지 말고 itemChange()에서 조정된 새 위치를 반환할 수 있습니다. 이 알림 이후 QGraphicsItem 는 위치가 변경된 경우 즉시 ItemPositionHasChanged 알림을 보냅니다. |
QGraphicsItem::ItemPositionHasChanged | 9 | 아이템의 위치가 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 상위 항목을 기준으로 항목의 로컬 위치가 변경된 후에 전송됩니다. 값 인수는 새 위치( pos()와 동일)이며 QGraphicsItem 은 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림). |
QGraphicsItem::ItemTransformChange | 8 | 항목의 변환 매트릭스가 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 로컬 변환 행렬이 변경될 때(즉, setTransform() 호출의 결과로) 전송됩니다. 값 인수는 새 행렬(즉, QTransform)이며, 이전 행렬을 가져오려면 transform()을 호출합니다. 이 알림이 전달될 때 setTransform()를 호출하거나 itemChange()에서 변환 속성을 설정하지 말고 대신 itemChange()에서 새 행렬을 반환할 수 있습니다. 변환 속성을 변경하는 경우에는 이 알림이 전송되지 않습니다. |
QGraphicsItem::ItemTransformHasChanged | 10 | setTransform 이 호출되었거나 변환 속성 중 하나가 변경되어 항목의 변환 매트릭스가 변경되었습니다. ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 로컬 변환 행렬이 변경된 후에 이 알림이 전송됩니다. 값 인수는 새 행렬( transform()과 동일)이며 QGraphicsItem 은 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림). |
QGraphicsItem::ItemRotationChange | 28 | 항목의 회전 속성이 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 회전 속성이 변경될 때(즉, setRotation() 호출의 결과로) 전송됩니다. 값 인수는 새 회전(즉, 이중)이며, 이전 회전을 가져오려면 rotation()를 호출합니다. 이 알림이 전달되므로 itemChange()에서 setRotation()를 호출하지 말고 대신 itemChange()에서 새 회전을 반환할 수 있습니다. |
QGraphicsItem::ItemRotationHasChanged | 29 | 항목의 로테이션 속성이 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 회전 속성이 변경된 후에 전송됩니다. 값 인수는 새 회전(즉, 이중)이며 QGraphicsItem 은 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림). 이 알림이 전달되므로 itemChange()에서 setRotation()를 호출하지 마세요. |
QGraphicsItem::ItemScaleChange | 30 | 항목의 스케일 속성이 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 스케일 속성이 변경될 때(즉, setScale() 호출의 결과로) 전송됩니다. 값 인수는 새 배율(즉, 더블)이며, 이전 배율을 가져오려면 scale()를 호출합니다. 이 알림이 전달되므로 itemChange()에서 setScale()를 호출하지 말고 대신 itemChange()에서 새 눈금을 반환할 수 있습니다. |
QGraphicsItem::ItemScaleHasChanged | 31 | 항목의 눈금 속성이 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 눈금 속성이 변경된 후에 전송됩니다. 값 인수는 새 배율(즉, 더블)이며 QGraphicsItem 은 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림). 이 알림이 전달되므로 itemChange()에서 setScale()를 호출하지 마세요. |
QGraphicsItem::ItemTransformOriginPointChange | 32 | 항목의 변형 원점 속성이 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 변형 원점 속성이 변경될 때(즉, setTransformOriginPoint() 호출의 결과로) 전송됩니다. 값 인수는 새 원점(즉, QPointF)이며, 이전 원점을 가져오려면 transformOriginPoint()을 호출합니다. 이 알림이 전달되므로 itemChange()에서 setTransformOriginPoint()를 호출하지 말고 대신 itemChange()에서 새 변환 원점을 반환할 수 있습니다. |
QGraphicsItem::ItemTransformOriginPointHasChanged | 33 | 항목의 변형 원점 속성이 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고 항목의 변형 원점 속성이 변경된 후에 전송됩니다. 값 인수는 새 원점(즉, QPointF)이며 QGraphicsItem 은 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림). 이 알림이 전달되므로 itemChange()에서 setTransformOriginPoint()를 호출하지 마세요. |
QGraphicsItem::ItemSelectedChange | 4 | 항목의 선택 상태가 변경됩니다. 항목이 현재 선택되어 있으면 선택 취소 상태가 되고, 그 반대의 경우도 마찬가지입니다. 값 인수는 새로 선택된 상태(즉, 참 또는 거짓)입니다. 이 알림이 전달될 때 itemChange()에서 setSelected()를 호출하지 말고 itemChange()에서 새 선택 상태를 반환할 수 있습니다. |
QGraphicsItem::ItemSelectedHasChanged | 14 | 항목의 선택 상태가 변경되었습니다. 값 인수는 새로 선택된 상태(즉, 참 또는 거짓)입니다. 이 알림이 전달되므로 itemChange()에서 setSelected()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemVisibleChange | 2 | 항목의 표시 상태가 변경됩니다. 현재 항목이 표시되어 있으면 보이지 않게 되고, 그 반대도 마찬가지입니다. 값 인수는 새로운 표시 상태(즉, 참 또는 거짓)입니다. 이 알림이 전달될 때 itemChange()에서 setVisible()를 호출하지 말고 itemChange()에서 새 표시 상태를 반환할 수 있습니다. |
QGraphicsItem::ItemVisibleHasChanged | 12 | 항목의 표시 상태가 변경되었습니다. 값 인수는 새 표시 상태(즉, 참 또는 거짓)입니다. 이 알림이 전달되므로 itemChange()에서 setVisible()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemParentChange | 5 | 항목의 부모가 변경됩니다. 값 인수는 새 상위 항목(즉, QGraphicsItem 포인터)입니다. 이 알림이 전달될 때 itemChange()에서 setParentItem()를 호출하지 말고 대신 itemChange()에서 새 부모를 반환할 수 있습니다. |
QGraphicsItem::ItemParentHasChanged | 15 | 항목의 부모가 변경되었습니다. 값 인수는 새 부모(즉, QGraphicsItem)에 대한 포인터입니다. 이 알림이 전달되므로 itemChange()에서 setParentItem()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemChildAddedChange | 6 | 이 항목에 자식이 추가됩니다. 값 인수는 새 하위 항목(즉, QGraphicsItem 포인터)입니다. 이 알림이 전달될 때 이 항목을 항목의 setParentItem() 함수에 전달하지 마세요. 반환 값은 사용되지 않으므로 이 알림에서 아무것도 조정할 수 없습니다. 이 알림이 전송될 때 새 자식이 완전히 구성되지 않을 수 있으며, 자식에서 순수 가상 함수를 호출하면 충돌이 발생할 수 있습니다. |
QGraphicsItem::ItemChildRemovedChange | 7 | 이 항목에서 자식이 제거됩니다. 값 인수는 제거하려는 하위 항목(즉, QGraphicsItem 포인터)입니다. 반환 값은 사용되지 않으므로 이 알림에서 아무것도 조정할 수 없습니다. |
QGraphicsItem::ItemSceneChange | 11 | 항목이 새 장면으로 이동됩니다. 이 알림은 항목이 초기 씬에 추가될 때와 제거될 때에도 전송됩니다. 항목의 scene()는 이전 씬이며, 항목이 아직 씬에 추가되지 않은 경우 nullptr 입니다. 값 인수는 새 씬(즉, QGraphicsScene 포인터)이거나, 항목이 씬에서 제거된 경우 nullptr 입니다. 이 알림이 전달될 때 이 항목을 QGraphicsScene::addItem()에 전달하여 이 변경 사항을 재정의하지 말고 itemChange()에서 새 장면을 반환할 수 있습니다. 장면 변경에 이의를 제기하면 원치 않는 재귀가 발생할 수 있으므로 이 기능을 신중하게 사용하세요. |
QGraphicsItem::ItemSceneHasChanged | 16 | 항목의 장면이 변경되었습니다. 항목의 scene()가 새 장면입니다. 이 알림은 항목이 초기 장면에 추가될 때와 제거될 때에도 전송되며, 값 인수는 새 장면(즉, QGraphicsScene)에 대한 포인터입니다. 이 알림이 전달되므로 itemChange()에서 setScene()을 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemCursorChange | 17 | 항목의 커서가 변경됩니다. 값 인수는 새 커서(즉, QCursor)입니다. 이 알림이 전달될 때 itemChange()에서 setCursor()를 호출하지 마세요. 대신 itemChange()에서 새 커서를 반환할 수 있습니다. |
QGraphicsItem::ItemCursorHasChanged | 18 | 항목의 커서가 변경되었습니다. 값 인수는 새 커서(즉, QCursor)입니다. 이 알림이 전달되므로 setCursor()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemToolTipChange | 19 | 항목의 도구 설명이 변경됩니다. 값 인수는 새 도구 설명입니다(예: QToolTip). 이 알림이 전달될 때 itemChange()에서 setToolTip()를 호출하지 마세요. 대신 itemChange()에서 새 툴팁을 반환할 수 있습니다. |
QGraphicsItem::ItemToolTipHasChanged | 20 | 항목의 툴팁이 변경되었습니다. 값 인수는 새 툴팁입니다(예: QToolTip). 이 알림이 전달되므로 setToolTip()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemFlagsChange | 21 | 항목의 플래그가 변경되었습니다. 값 인수는 새 플래그(예: quint32)입니다. 이 알림이 전달될 때 itemChange()에서 setFlags()를 호출하지 마세요. 대신 itemChange()에서 새 플래그를 반환할 수 있습니다. |
QGraphicsItem::ItemFlagsHaveChanged | 22 | 항목의 플래그가 변경되었습니다. 값 인수는 새 플래그(즉, quint32)입니다. 이 알림이 전달되므로 itemChange()에서 setFlags()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemZValueChange | 23 | 항목의 Z 값이 변경됩니다. 값 인수는 새 Z 값(즉, 이중)입니다. 이 알림이 전달되므로 itemChange()에서 setZValue()를 호출하지 마세요. 대신 itemChange()에서 새 Z값을 반환할 수 있습니다. |
QGraphicsItem::ItemZValueHasChanged | 24 | 항목의 Z값이 변경되었습니다. 값 인수는 새 Z 값(즉, 더블)입니다. 이 알림이 전달되므로 setZValue()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemOpacityChange | 25 | 항목의 불투명도가 변경되었습니다. 값 인수는 새 불투명도(즉, 이중)입니다. 이 알림이 전달될 때 itemChange()에서 setOpacity()를 호출하지 마세요. 대신 itemChange()에서 새 불투명도를 반환할 수 있습니다. |
QGraphicsItem::ItemOpacityHasChanged | 26 | 항목의 불투명도가 변경되었습니다. 값 인수는 새 불투명도(즉, 이중)입니다. 이 알림이 전달되므로 setOpacity()를 호출하지 마세요. 반환 값은 무시됩니다. |
QGraphicsItem::ItemScenePositionHasChanged | 27 | 항목의 장면 위치가 변경되었습니다. 이 알림은 ItemSendsScenePositionChanges 플래그가 활성화되어 있고 항목의 장면 위치가 변경된 후(즉, 항목 자체의 위치나 변형 또는 모든 조상의 위치나 변형이 변경된 경우) 전송됩니다. 값 인수는 새 장면 위치( scenePos()와 동일)이며 QGraphicsItem 은 이 알림의 반환값을 무시합니다(즉, 읽기 전용 알림). |
열거형 QGraphicsItem::GraphicsItemFlag
플래그 QGraphicsItem::GraphicsItemFlags
이 열거형은 항목의 동작에서 다양한 기능을 토글하기 위해 항목에 설정할 수 있는 다양한 플래그를 설명합니다.
모든 플래그는 기본적으로 비활성화되어 있습니다.
상수 | 값 | 설명 |
---|---|---|
QGraphicsItem::ItemIsMovable | 0x1 | 항목이 마우스를 사용한 대화형 이동을 지원합니다. 항목을 클릭한 다음 드래그하면 마우스 커서와 함께 항목이 함께 이동합니다. 항목에 자식이 있는 경우 모든 자식도 함께 이동합니다. 항목이 선택 항목의 일부인 경우 선택된 모든 항목도 이동합니다. 이 기능은 QGraphicsItem 의 마우스 이벤트 핸들러의 기본 구현을 통해 편의상 제공됩니다. |
QGraphicsItem::ItemIsSelectable | 0x2 | 항목이 선택을 지원합니다. 이 기능을 활성화하면 setSelected()가 항목의 선택을 토글할 수 있습니다. 또한 QGraphicsScene::setSelectionArea()를 호출하거나 항목을 클릭하거나 QGraphicsView 에서 고무줄 선택을 사용하여 항목이 자동으로 선택되도록 할 수 있습니다. |
QGraphicsItem::ItemIsFocusable | 0x4 | 항목이 키보드 입력 초점을 지원합니다(즉, 입력 항목인 경우). 이 플래그를 활성화하면 항목이 포커스를 수락하여 QGraphicsItem::keyPressEvent() 및 QGraphicsItem::keyReleaseEvent()로 주요 이벤트를 전달할 수 있습니다. |
QGraphicsItem::ItemClipsToShape | 0x8 | 항목이 자체 모양으로 클립됩니다. 항목은 마우스, 태블릿, 드래그 앤 드롭 또는 마우스오버 이벤트를 모양 외부로 그리거나 받을 수 없습니다. 기본적으로 비활성화되어 있습니다. 이 동작은 QGraphicsView::drawItems() 또는 QGraphicsScene::drawItems()에 의해 시행됩니다. 이 플래그는 Qt 4.3에 도입되었습니다. |
QGraphicsItem::ItemClipsChildrenToShape | 0x10 | 이 항목은 모든 자손의 그림을 자신의 모양으로 클립합니다. 이 항목의 직접 또는 간접 자식인 항목은 이 항목의 모양 외부에 그릴 수 없습니다. 기본적으로 이 플래그는 비활성화되어 있으며 자식은 아무 곳에나 그릴 수 있습니다. 이 동작은 QGraphicsView::drawItems() 또는 QGraphicsScene::drawItems()에 의해 시행됩니다. 이 플래그는 Qt 4.3에 도입되었습니다. |
참고: 이 플래그는 ItemContainsChildrenInShape와 유사하지만 자식을 클리핑하여 포함을 강제합니다.
Constant | 값 | 설명 |
---|---|---|
QGraphicsItem::ItemIgnoresTransformations | 0x20 | 항목이 상속된 변환을 무시합니다(즉, 항목의 위치는 여전히 부모에 고정되지만 부모 또는 뷰 회전, 확대/축소 또는 전단 변환은 무시됩니다). 이 플래그는 뷰가 변형되더라도 텍스트 레이블 항목을 가로로 유지하고 크기를 조정하지 않은 상태로 유지하여 읽을 수 있도록 하는 데 유용합니다. 이 플래그를 설정하면 항목의 뷰 지오메트리와 장면 지오메트리가 별도로 유지됩니다. 뷰에서 좌표를 매핑하고 충돌을 감지하려면 deviceTransform()를 호출해야 합니다. 기본적으로 이 플래그는 비활성화되어 있습니다. 이 플래그는 Qt 4.3에 도입되었습니다. |
참고: 이 플래그를 설정해도 항목 자체의 배율을 조정할 수 있으며 해당 배율 변환은 항목의 하위 항목에 영향을 미칩니다.
Constant | 값 | 설명 |
---|---|---|
QGraphicsItem::ItemIgnoresParentOpacity | 0x40 | 항목이 부모의 불투명도를 무시합니다. 항목의 유효 불투명도는 항목 자체의 불투명도와 동일하며 부모의 불투명도와 결합되지 않습니다. 이 플래그를 사용하면 부모가 반투명하더라도 항목의 절대 불투명도를 유지할 수 있습니다. 이 플래그는 Qt 4.5에 도입되었습니다. |
QGraphicsItem::ItemDoesntPropagateOpacityToChildren | 0x80 | 항목이 자식에게 불투명도를 전파하지 않습니다. 이 플래그를 사용하면 자손의 불투명도에 영향을 주지 않는 반투명 항목을 만들 수 있습니다. 이 플래그는 Qt 4.5에 도입되었습니다. |
QGraphicsItem::ItemStacksBehindParent | 0x100 | 항목이 부모 항목 뒤에 쌓입니다. 기본적으로 자식 항목은 부모 항목 위에 쌓입니다. 하지만 이 플래그를 설정하면 자식이 그 뒤에 쌓입니다. 이 플래그는 그림자 효과와 부모 항목의 지오메트리 위에 그리지 않고 그 위에 따라 그리는 장식 개체에 유용합니다. 이 플래그는 Qt 4.5에 도입되었습니다. |
QGraphicsItem::ItemUsesExtendedStyleOption | 0x200 | 항목은 QStyleOptionGraphicsItem 에서 exposedRect 를 사용합니다. 기본적으로 exposedRect 는 항목의 boundingRect()로 초기화됩니다. 이 플래그를 활성화하면 스타일 옵션을 보다 세분화된 값으로 설정할 수 있습니다. 더 높은 값이 필요한 경우 QStyleOptionGraphicsItem::levelOfDetailFromTransform()를 사용하세요. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemHasNoContents | 0x400 | 항목에 아무 것도 칠하지 않습니다(즉, 항목에서 paint()를 호출해도 효과가 없습니다). 칠할 필요가 없는 항목에 이 플래그를 설정하여 그래픽 보기가 불필요한 칠 준비를 피하도록 해야 합니다. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemSendsGeometryChanges | 0x800 | 이 항목은 ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, ItemTransformHasChanged, ItemRotationChange, ItemRotationHasChanged, ItemScaleChange, ItemScaleHasChanged, ItemTransformOriginPointChange, ItemTransformOriginPointHasChanged 에 대한 itemChange() 알림을 활성화합니다. 성능상의 이유로 이러한 알림은 기본적으로 비활성화되어 있습니다. 위치 및 트랜스폼 변경에 대한 알림을 받으려면 이 플래그를 활성화해야 합니다. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemAcceptsInputMethod | 0x1000 | 이 항목은 아시아 언어에 일반적으로 사용되는 입력 방법을 지원합니다. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemNegativeZStacksBehindParent | 0x2000 | z값이 음수인 경우 항목은 자동으로 부모 뒤에 스택됩니다. 이 플래그를 사용하면 setZValue()가 ItemStacksBehindParent를 토글할 수 있습니다. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemIsPanel | 0x4000 | 항목이 패널입니다. 패널은 활성화 및 포함된 포커스 처리를 제공합니다. 한 번에 하나의 패널만 활성화할 수 있습니다( QGraphicsItem::isActive() 참조). 활성화된 패널이 없는 경우 QGraphicsScene 은 패널이 아닌 모든 항목을 활성화합니다. 창 항목(예: QGraphicsItem::isWindow()은 true )을 반환합니다. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemSendsScenePositionChanges | 0x10000 | 이 항목은 ItemScenePositionHasChanged 에 대한 itemChange() 알림을 활성화합니다. 성능상의 이유로 이러한 알림은 기본적으로 비활성화되어 있습니다. 장면 위치 변경에 대한 알림을 받으려면 이 플래그를 활성화해야 합니다. 이 플래그는 Qt 4.6에 도입되었습니다. |
QGraphicsItem::ItemContainsChildrenInShape | 0x80000 | 이 플래그는 항목의 모든 직접 또는 간접 자식이 항목의 모양 내에서만 그려지도록 합니다. ItemClipsChildrenToShape와 달리 이 제한은 적용되지 않습니다. 그리기가 항목의 도형에 바인딩되도록 수동으로 설정하고 클립 적용과 관련된 비용을 피하려면 ItemContainsChildrenInShape를 설정합니다. 이 플래그를 설정하면 드로잉 및 충돌 감지를 보다 효율적으로 수행할 수 있습니다. 이 플래그는 기본적으로 비활성화되어 있습니다. |
참고: 이 플래그와 ItemClipsChildrenToShape가 모두 설정되어 있으면 클립이 적용됩니다. 이는 ItemClipsChildrenToShape만 설정하는 것과 같습니다.
이 플래그는 Qt 5.4에 도입되었습니다.
GraphicsItemFlags 유형은 QFlags<GraphicsItemFlag>에 대한 typedef입니다. GraphicsItemFlag 값의 OR 조합을 저장합니다.
enum QGraphicsItem::PanelModality
이 열거형은 모달 패널의 동작을 지정합니다. 모달 패널은 다른 패널에 대한 입력을 차단하는 패널입니다. 모달 패널의 자식인 항목은 차단되지 않습니다.
값은 다음과 같습니다:
상수 | 값 | 설명 |
---|---|---|
QGraphicsItem::NonModal | 0 | 패널이 모달이 아니며 다른 패널에 대한 입력을 차단하지 않습니다. 패널의 기본값입니다. |
QGraphicsItem::PanelModal | 1 | 패널은 단일 항목 계층 구조에 대해 모달이며 부모 패널, 모든 상위 패널 및 부모 및 상위 패널의 모든 형제 패널에 대한 입력을 차단합니다. |
QGraphicsItem::SceneModal | 2 | 창은 전체 장면에 대한 모달이며 모든 패널에 대한 입력을 차단합니다. |
QGraphicsItem::setPanelModality(), QGraphicsItem::panelModality() 및 QGraphicsItem::ItemIsPanel 를참조하십시오 .
enum QGraphicsItem::anonymous
Qt의 표준 그래픽 항목 클래스에서 가상 type() 함수가 반환하는 값입니다. Qt의 모든 표준 그래픽 항목 클래스는 Type의 고유한 값과 연관되어 있습니다 (예: QGraphicsPathItem::type()가 반환하는 값은 2입니다).
Constant | Value | 설명 |
---|---|---|
QGraphicsItem::Type | 1 | class QGraphicsPathItem : public QAbstractGraphicsShapeItem { public: enum { Type = 2 }; int type() const override { return Type; } ... }; |
QGraphicsItem::UserType | 65536 | QGraphicsItem 의 사용자 정의 서브클래스에 대한 가상 type() 함수가 반환하는 가장 낮은 값입니다.class CustomItem : public QGraphicsItem { public: enum { Type = UserType + 1 }; int type() const override { // Enable the use of qgraphicsitem_cast with this item. return Type; } ... }; |
멤버 함수 문서
[explicit]
QGraphicsItem::QGraphicsItem(QGraphicsItem *parent = nullptr)
주어진 parent 항목으로 QGraphicsItem을 구축합니다. QObject::parent ()에서 반환된 부모 객체는 수정하지 않습니다.
parent 가 nullptr
인 경우 QGraphicsScene::addItem()를 호출하여 장면에 항목을 추가할 수 있습니다. 그러면 해당 항목이 최상위 항목이 됩니다.
QGraphicsScene::addItem() 및 setParentItem()도 참조하세요 .
[virtual noexcept]
QGraphicsItem::~QGraphicsItem()
QGraphicsItem 및 모든 하위 항목을 삭제합니다. 이 항목이 현재 장면과 연결되어 있는 경우 삭제되기 전에 장면에서 항목이 제거됩니다.
참고: 항목을 삭제하기 전에 QGraphicsScene 에서 항목을 제거하는 것이 더 효율적입니다.
bool QGraphicsItem::acceptDrops() const
이 항목이 드래그 앤 드롭 이벤트를 허용할 수 있으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 기본적으로 항목은 드래그 앤 드롭 이벤트를 허용하지 않으며, 항목은 드래그 앤 드롭에 투명합니다.
setAcceptDrops()도 참조하세요 .
bool QGraphicsItem::acceptHoverEvents() const
항목이 마우스오버 이벤트(QGraphicsSceneHoverEvent)를 허용하는 경우 true
를 반환하고, 그렇지 않으면 false
를 반환합니다. 기본적으로 항목은 마우스오버 이벤트를 허용하지 않습니다.
setAcceptHoverEvents() 및 setAcceptedMouseButtons()도 참조하세요 .
bool QGraphicsItem::acceptTouchEvents() const
항목이 touch events 을 수락하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. 기본적으로 항목은 터치 이벤트를 수락하지 않습니다.
setAcceptTouchEvents()도 참조하세요 .
Qt::MouseButtons QGraphicsItem::acceptedMouseButtons() const
이 항목이 마우스 이벤트를 수락하는 마우스 버튼을 반환합니다. 기본적으로 모든 마우스 버튼이 허용됩니다.
항목이 마우스 버튼을 수락하면 해당 마우스 버튼에 대한 마우스 누름 이벤트가 전달될 때 해당 항목이 마우스 그래버 항목이 됩니다. 그러나 항목이 버튼을 수락하지 않는 경우 QGraphicsScene 은 마우스 이벤트를 수락하는 그 아래의 첫 번째 항목으로 마우스 이벤트를 전달합니다.
setAcceptedMouseButtons() 및 mousePressEvent()도 참조하세요 .
[virtual]
void QGraphicsItem::advance(int phase)
이 가상 함수는 QGraphicsScene::advance() 슬롯에 의해 모든 항목에 대해 두 번 호출됩니다. 첫 번째 단계에서는 모든 항목이 phase == 0으로 호출되어 씬의 항목이 곧 진행됨을 나타내고, 그 다음에는 모든 항목이 phase == 1로 호출됩니다. 간단한 장면 제어 애니메이션이 필요한 경우 이 함수를 다시 구현하여 항목을 업데이트하세요.
기본 구현은 아무 작업도 수행하지 않습니다.
이 함수는 애니메이션을 위한 것입니다. 다른 방법은 QObject 및 QGraphicsItem 에서 다중 상속하고 애니메이션 프레임워크를 사용하는 것입니다.
QGraphicsScene::advance() 및 QTimeLine 을참조하세요 .
[pure virtual]
QRectF QGraphicsItem::boundingRect() const
이 순수 가상 함수는 항목의 바깥쪽 경계를 직사각형으로 정의하며, 모든 페인팅은 항목의 경계 사각형 내부로 제한되어야 합니다. QGraphicsView 는 이를 사용하여 항목에 다시 그리기가 필요한지 여부를 결정합니다.
항목의 모양은 임의적일 수 있지만 경계 직사각형은 항상 직사각형이며 항목의 변형에 영향을 받지 않습니다.
항목의 경계 직사각형을 변경하려면 먼저 prepareGeometryChange()를 호출해야 합니다. 이렇게 하면 변경이 임박했음을 장면에 알려서 항목 지오메트리 인덱스를 업데이트할 수 있으며, 그렇지 않으면 장면이 항목의 새 지오메트리를 인식하지 못하고 결과가 정의되지 않습니다(일반적으로 렌더링 아티팩트가 뷰 내에 남음).
이 함수를 다시 구현하여 QGraphicsView 가 위젯의 어떤 부분을 다시 그려야 하는지 결정하도록 합니다.
참고: 윤곽선/획을 그리는 도형의 경우 경계 사각형에 펜 너비의 절반을 포함시키는 것이 중요합니다. 하지만 앤티앨리어싱을 보정할 필요는 없습니다.
예시:
QRectF CircleItem::boundingRect() const { qreal penWidth = 1; return QRectF(-radius - penWidth / 2, -radius - penWidth / 2, diameter + penWidth, diameter + penWidth); }
boundingRegion(), shape(), contains(), 그래픽 보기 좌표계 및 prepareGeometryChange()도 참조하세요 .
QRegion QGraphicsItem::boundingRegion(const QTransform &itemToDeviceTransform) const
이 항목의 경계 영역을 반환합니다. 반환되는 영역의 좌표 공간은 itemToDeviceTransform 에 따라 달라집니다. QTransform 를 매개변수로 전달하면 이 함수는 로컬 좌표 영역을 반환합니다.
경계 영역은 항목의 시각적 콘텐츠에 대한 대략적인 윤곽을 설명합니다. 계산 비용이 많이 들지만 boundingRect()보다 더 정확하며 항목이 업데이트될 때 불필요하게 다시 칠하는 것을 방지하는 데 도움이 될 수 있습니다. 특히 선이나 단순한 다각형과 같은 얇은 항목에 효과적입니다. setBoundingRegionGranularity ()를 호출하여 경계 영역의 세분성을 조정할 수 있습니다. 기본 세분성은 0이며, 이 경우 항목의 경계 영역은 해당 경계 사각형과 동일합니다.
itemToDeviceTransform 는 항목 좌표에서 디바이스 좌표로의 변환입니다. 이 함수가 장면 좌표로 QRegion 를 반환하도록 하려면 sceneTransform()를 인수로 전달하면 됩니다.
boundingRegionGranularity()도 참조하십시오 .
qreal QGraphicsItem::boundingRegionGranularity() const
항목의 경계 영역 세분성(0에서 1 사이의 값)을 반환합니다. 기본값은 0(즉, 경계 영역이 항목의 경계 사각형에 해당하는 가장 낮은 세분성)입니다.
setBoundingRegionGranularity()도 참조하세요 .
QGraphicsItem::CacheMode QGraphicsItem::cacheMode() const
이 항목의 캐시 모드를 반환합니다. 기본 모드는 NoCache (즉, 캐시가 비활성화되고 모든 페인팅이 즉시 수행됨)입니다.
setCacheMode()도 참조하세요 .
QList<QGraphicsItem *> QGraphicsItem::childItems() const
이 항목의 하위 항목 목록을 반환합니다.
항목은 누적 순서에 따라 정렬됩니다. 이는 항목의 삽입 순서와 Z값을 모두 고려합니다.
setParentItem(), zValue() 및 Sorting 를참조하세요 .
QRectF QGraphicsItem::childrenBoundingRect() const
이 항목의 자손(즉, 그 자식, 그 자식 등)의 경계 직사각형을 로컬 좌표로 반환합니다. 직사각형은 로컬 좌표에 매핑된 후 모든 자손을 포함합니다. 항목에 자식이 없는 경우 이 함수는 빈 QRectF 을 반환합니다.
여기에는 이 항목의 자체 경계 사각형은 포함되지 않으며, 자손의 누적된 경계 사각형만 반환합니다. 이 항목의 바운딩 직사각형을 포함해야 하는 경우 QRectF::operator|()를 사용하여 childrenBoundingRect()에 boundingRect()를 추가할 수 있습니다.
이 함수는 모든 자손을 반복하여 반환된 바운딩 사각형의 크기를 결정하므로 복잡도가 선형적입니다.
boundingRect() 및 sceneBoundingRect()도 참조하세요 .
void QGraphicsItem::clearFocus()
항목에서 키보드 입력 포커스를 가져옵니다.
포커스가 있는 경우 이 항목에 focus out event 을 전송하여 포커스가 곧 사라질 것임을 알립니다.
ItemIsFocusable 플래그를 설정한 항목 또는 적절한 포커스 정책을 설정한 위젯만 키보드 포커스를 받을 수 있습니다.
setFocus(), hasFocus() 및 QGraphicsWidget::focusPolicy 를참조하세요 .
QPainterPath QGraphicsItem::clipPath() const
이 항목의 클립 경로를 반환하거나, 이 항목이 클립되지 않은 경우 빈 QPainterPath 을 반환합니다. 클립 경로는 항목의 모양과 상호 작용을 제한합니다(즉, 항목이 그릴 수 있고 이벤트를 수신할 수 있는 영역을 제한합니다).
ItemClipsToShape 또는 ItemClipsChildrenToShape 플래그를 설정하여 클리핑을 활성화할 수 있습니다. 항목의 클립 경로는 모든 클리핑 조상의 모양을 교차하여 계산됩니다. 항목이 ItemClipsToShape 를 설정하면 최종 클립은 항목의 자체 모양과 교차합니다.
참고: 클리핑을 사용하면 관련된 모든 항목에 성능 저하가 발생하므로 일반적으로 가능한 경우 클리핑을 사용하지 않는 것이 좋습니다(예: 항목이 항상 boundingRect() 또는 shape() 경계 안에 그려지는 경우 클리핑이 필요하지 않음).
isClipped(), shape() 및 setFlags()도 참조하세요 .
[virtual]
bool QGraphicsItem::collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
이 항목이 other 과 충돌하면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
mode 은 other 에 적용되며, 그 결과 모양 또는 경계 사각형이 이 항목의 모양과 비교됩니다. mode 의 기본값은 Qt::IntersectsItemShape 이며, other 이 이 항목의 도형과 교차하거나 포함하거나 이 항목에 의해 포함되는 경우 이 항목과 충돌합니다(자세한 내용은 Qt::ItemSelectionMode 참조).
기본 구현은 도형 교차를 기반으로 하며 두 항목 모두 shape()를 호출합니다. 도형이 복잡하면 임의의 도형-도형 교집합의 복잡성이 기하급수적으로 증가하므로 이 작업은 눈에 띄게 시간이 많이 소요될 수 있습니다. QGraphicsItem 의 서브클래스에서 이 함수를 다시 구현하여 사용자 정의 알고리즘을 제공하는 옵션이 있습니다. 이렇게 하면 아이템의 모양에 자연스러운 제약 조건을 사용하여 충돌 감지의 성능을 향상시킬 수 있습니다. 예를 들어, 변형되지 않은 완벽한 원형의 두 아이템의 위치와 반경을 비교하여 충돌 여부를 매우 효율적으로 결정할 수 있습니다.
이 함수를 다시 구현하고 other 에서 shape() 또는 boundingRect()을 호출할 때 반환된 좌표가 이 항목의 좌표계에 매핑되어야 교차가 발생할 수 있다는 점에 유의하세요.
[virtual]
bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
이 항목이 path 과 충돌하면 true
을 반환합니다.
충돌은 mode 에 의해 결정됩니다. mode 의 기본값은 Qt::IntersectsItemShape 이며, path 은 이 항목과 교차하거나 이 항목의 모양에 포함되거나 포함되는 경우 이 항목과 충돌합니다.
이 함수는 항목의 모양 또는 경계 사각형( mode 에 따라 다름)이 path 내에 포함되어 있는지 여부를 확인하며 path 가 항목 모양 또는 경계 사각형 내에 포함되어 있는지 여부는 확인하지 않습니다.
collidesWithItem(), contains() 및 shape()도 참조하세요 .
QList<QGraphicsItem *> QGraphicsItem::collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
이 항목과 충돌하는 모든 항목의 목록을 반환합니다.
충돌이 감지되는 방식은 이 항목과 비교되는 항목에 mode 을 적용하여 결정됩니다. 즉, 각 항목의 모양 또는 경계 사각형이 이 항목의 모양과 비교하여 확인됩니다. mode 의 기본값은 Qt::IntersectsItemShape 입니다.
collidesWithItem()도 참조하세요 .
QGraphicsItem *QGraphicsItem::commonAncestorItem(const QGraphicsItem *other) const
이 항목과 other, 또는 other 이 nullptr
이거나 공통 조상이 없는 경우 nullptr
의 가장 가까운 공통 조상 항목을 반환합니다.
isAncestorOf()도 참조하세요 .
[virtual]
bool QGraphicsItem::contains(const QPointF &point) const
이 항목에 로컬 좌표인 point 이 포함되어 있으면 true
을 반환하고, 그렇지 않으면 false를 반환합니다. 이 함수는 커서 아래에 있는 항목을 확인하기 위해 QGraphicsView 에서 가장 자주 호출되며, 따라서 이 함수의 구현은 가능한 한 가벼워야 합니다.
기본적으로 이 함수는 shape()를 호출하지만 하위 클래스에서 재구현하여 (아마도 더 효율적인) 구현을 제공할 수 있습니다.
shape(), boundingRect() 및 collidesWithPath()도 참조하세요 .
[virtual protected]
void QGraphicsItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
이 이벤트 핸들러는 하위 클래스에서 다시 구현하여 컨텍스트 메뉴 이벤트를 처리할 수 있습니다. event 매개변수에는 처리할 이벤트에 대한 세부 정보가 포함됩니다.
이벤트를 무시하면(예: QEvent::ignore() 호출) event 이 항목 아래의 모든 항목에 전파됩니다. 이벤트를 수락하는 항목이 없으면 씬에서 무시되고 뷰로 전파됩니다.
컨텍스트 메뉴 이벤트 수신에 대한 응답으로 QMenu 을 여는 것이 일반적입니다. 예시:
void CustomItem::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { QMenu menu; QAction *removeAction = menu.addAction("Remove"); QAction *markAction = menu.addAction("Mark"); QAction *selectedAction = menu.exec(event->screenPos()); // ... }
기본 구현은 이벤트를 무시합니다.
sceneEvent()도 참조하세요 .
QCursor QGraphicsItem::cursor() const
항목의 현재 커서 모양을 반환합니다. 마우스 커서가 이 항목 위에 있을 때 이 모양을 취합니다. 유용한 다양한 모양은 list of predefined cursor objects 을 참조하세요.
편집기 항목은 I-빔 커서를 사용할 수 있습니다:
item->setCursor(Qt::IBeamCursor);
커서가 설정되지 않은 경우 아래 항목의 커서가 사용됩니다.
setCursor(), hasCursor(), unsetCursor(), QWidget::cursor, 및 QGuiApplication::overrideCursor()도 참조하세요 .
QVariant QGraphicsItem::data(int key) const
key 키에 대한 이 항목의 사용자 지정 데이터를 QVariant 로 반환합니다.
사용자 지정 항목 데이터는 모든 항목에 임의의 속성을 저장하는 데 유용합니다. 예제:
static const int ObjectName = 0; QGraphicsItem *item = scene.itemAt(100, 50); if (item->data(ObjectName).toString().isEmpty()) { if (qgraphicsitem_cast<ButtonItem *>(item)) item->setData(ObjectName, "Button"); }
Qt는 이 기능을 데이터 저장에 사용하지 않으며, 사용자의 편의를 위해서만 제공됩니다.
setData()도 참조하십시오 .
QTransform QGraphicsItem::deviceTransform(const QTransform &viewportTransform) const
viewportTransform 을 사용하여 장면에서 장치 좌표로 매핑하는 이 항목의 장치 변환 행렬을 반환합니다. 이 행렬은 이 항목의 로컬 좌표계에서 뷰포트(또는 모든 장치의) 좌표계로 좌표 및 기하학적 도형을 매핑하는 데 사용할 수 있습니다. 뷰포트에서 좌표를 매핑하려면 먼저 반환된 행렬을 반전해야 합니다.
예시:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.deviceTransform(view->viewportTransform()).map(QPointF(0, 0)); // returns the item's (0, 0) point in view's viewport coordinates rect.deviceTransform(view->viewportTransform()).inverted().map(QPointF(100, 100)); // returns view's viewport's (100, 100) coordinate in item coordinates
이 함수는 이 항목의 장면 변환을 뷰의 뷰포트 변환과 결합하는 것과 동일하지만 ItemIgnoresTransformations 플래그도 이해합니다. 장치 트랜스폼을 사용하여 변환할 수 없는 항목에 대해 정확한 좌표 매핑(및 충돌 감지)을 수행할 수 있습니다.
transform(), setTransform(), scenePos(), 그래픽 뷰 좌표계 및 itemTransform()도 참조하십시오 .
[virtual protected]
void QGraphicsItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 드래그 입력 이벤트를 수신할 수 있습니다. 드래그 입력 이벤트는 커서가 항목의 영역에 들어갈 때 생성됩니다.
이벤트를 수락하면(즉, QEvent::accept()를 호출하여) 항목은 드래그 이동 및 드래그 나가기 이벤트를 수신할 뿐만 아니라 드롭 이벤트도 수락합니다. 그렇지 않으면 이벤트가 무시되고 아래 아이템으로 전파됩니다. 이벤트가 수락되면 컨트롤이 이벤트 루프로 돌아가기 전에 항목이 드래그 이동 이벤트를 받습니다.
dragEnterEvent의 일반적인 구현은 event 의 관련 마임 데이터에 따라 event 을 수락하거나 무시합니다. 예시:
CustomItem::CustomItem() { setAcceptDrops(true); ... } void CustomItem::dragEnterEvent(QGraphicsSceneDragDropEvent *event) { event->setAccepted(event->mimeData()->hasFormat("text/plain")); }
항목은 기본적으로 드래그 앤 드롭 이벤트를 수신하지 않습니다. 이 기능을 활성화하려면 setAcceptDrops(true)
을 호출하세요.
기본 구현은 아무 작업도 수행하지 않습니다.
dropEvent(), dragMoveEvent() 및 dragLeaveEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 드래그 나가기 이벤트를 수신할 수 있습니다. 드래그 나가기 이벤트는 커서가 항목의 영역을 벗어날 때 생성됩니다. 대부분의 경우 이 함수를 다시 구현할 필요는 없지만 항목의 상태를 재설정할 때(예: 강조 표시) 유용할 수 있습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출해도 효과가 없습니다.
항목은 기본적으로 드래그 앤 드롭 이벤트를 수신하지 않습니다. 이 기능을 활성화하려면 setAcceptDrops(true)
을 호출하세요.
기본 구현은 아무 작업도 수행하지 않습니다.
dragEnterEvent(), dropEvent() 및 dragMoveEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::dragMoveEvent(QGraphicsSceneDragDropEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 드래그 이동 이벤트를 수신할 수 있습니다. 드래그 이동 이벤트는 커서가 항목의 영역 내에서 이동할 때 생성됩니다. 대부분의 경우 이 함수는 다시 구현할 필요가 없으며, 항목의 일부만 드래그를 허용할 수 있음을 나타내는 데 사용됩니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출하면 이벤트에서 아이템이 해당 위치의 드롭을 허용할지 여부가 전환됩니다. 기본적으로 event 은 항목이 지정된 위치에서 드래그 앤 드롭을 허용함을 나타냅니다.
항목은 기본적으로 드래그 앤 드롭 이벤트를 받지 않으므로 이 기능을 활성화하려면 setAcceptDrops(true)
을 호출하세요.
기본 구현은 아무 작업도 수행하지 않습니다.
dropEvent(), dragEnterEvent() 및 dragLeaveEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::dropEvent(QGraphicsSceneDragDropEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 아이템에 대한 드롭 이벤트를 수신할 수 있습니다. 항목은 마지막 드래그 이동 이벤트가 수락된 경우에만 드롭 이벤트를 받을 수 있습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출해도 효과가 없습니다.
항목은 기본적으로 드래그 앤 드롭 이벤트를 수신하지 않습니다. 이 기능을 활성화하려면 setAcceptDrops(true)
을 호출하세요.
기본 구현은 아무 일도 하지 않습니다.
dragEnterEvent(), dragMoveEvent() 및 dragLeaveEvent()도 참조하세요 .
qreal QGraphicsItem::effectiveOpacity() const
이 항목의 유효 불투명도를 0.0(투명)에서 1.0(불투명) 사이의 값으로 반환합니다. 이 값은 이 항목의 로컬 불투명도와 부모 및 상위 항목의 불투명도를 조합한 값입니다. 유효 불투명도에 따라 항목이 렌더링되는 방식이 결정됩니다.
opacity(), setOpacity(), paint(), ItemIgnoresParentOpacity, 및 ItemDoesntPropagateOpacityToChildren 를참조하세요 .
void QGraphicsItem::ensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
이 항목이 QGraphicsView 에서 보는 장면의 일부인 경우 이 편의 기능은 뷰의 뷰포트 내부에 rect 이 표시되도록 뷰를 스크롤하려고 시도합니다. rect 이 널 사각형(기본값)인 경우 QGraphicsItem 이 항목의 경계 사각형으로 기본 설정됩니다. xmargin 및 ymargin 은 뷰가 여백에 사용해야 하는 픽셀 수입니다.
지정된 직사각형에 도달할 수 없는 경우 콘텐츠가 가장 가까운 유효한 위치로 스크롤됩니다.
이 항목이 QGraphicsView 에 의해 보이지 않는 경우 이 함수는 아무 작업도 수행하지 않습니다.
QGraphicsView::ensureVisible()도 참조하십시오 .
void QGraphicsItem::ensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
이 편의 함수는 ensureVisible(QRectF(x, y, w, h), xmargin, ymargin)을 호출하는 것과 동일합니다.
bool QGraphicsItem::filtersChildEvents() const
이 항목이 하위 이벤트를 필터링하는 경우(즉, 모든 하위 이벤트가 대신 이 항목으로 전송되는 경우) true
을 반환하고, 그렇지 않으면 false를 반환합니다.
기본값은 false이며, 하위 이벤트는 필터링되지 않습니다.
setFiltersChildEvents()도 참조하세요 .
QGraphicsItem::GraphicsItemFlags QGraphicsItem::flags() const
이 항목의 플래그를 반환합니다. 플래그는 항목의 구성 가능한 기능 중 활성화할 수 있는 기능과 그렇지 않은 기능을 설명합니다. 예를 들어, 플래그에 ItemIsFocusable 이 포함된 경우 항목은 입력 포커스를 허용할 수 있습니다.
기본적으로 플래그는 활성화되지 않습니다.
setFlags() 및 setFlag()도 참조하세요 .
[virtual protected]
void QGraphicsItem::focusInEvent(QFocusEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 이벤트에서 포커스를 받을 수 있습니다. 기본 구현은 ensureVisible()를 호출합니다.
focusOutEvent(), sceneEvent() 및 setFocus()도 참조하세요 .
QGraphicsItem *QGraphicsItem::focusItem() const
이 항목, 이 항목의 자식 또는 하위 항목에 현재 입력 포커스가 있는 경우 이 함수는 해당 항목에 대한 포인터를 반환합니다. 입력 포커스가 있는 하위 항목이 없으면 nullptr
이 반환됩니다.
hasFocus(), setFocus() 및 QWidget::focusWidget()도 참조하세요 .
[virtual protected]
void QGraphicsItem::focusOutEvent(QFocusEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 포커스 아웃 이벤트를 수신할 수 있습니다. 기본 구현은 아무 작업도 수행하지 않습니다.
focusInEvent(), sceneEvent() 및 setFocus()도 참조하세요 .
QGraphicsItem *QGraphicsItem::focusProxy() const
이 항목의 포커스 프록시를 반환하거나, 이 항목에 포커스 프록시가 없는 경우 nullptr
을 반환합니다.
setFocusProxy(), setFocus() 및 hasFocus()도 참조하세요 .
void QGraphicsItem::grabKeyboard()
키보드 입력을 받습니다.
항목은 다음 이벤트 중 하나가 발생할 때까지 장면에 대한 모든 키보드 입력을 수신합니다:
- 항목이 보이지 않게 됩니다.
- 항목이 장면에서 제거됩니다.
- 항목이 삭제됩니다.
- 항목이 ungrabKeyboard()를 호출합니다.
- 다른 항목이 grabKeyboard()를 호출하고, 다른 항목이 ungrabKeyboard()를 호출하면 항목이 키보드 잡기를 되찾습니다.
항목이 키보드 잡기를 획득하면 QEvent::GrabKeyboard 이벤트를 받습니다. 키보드 잡기를 잃으면 QEvent::UngrabKeyboard 이벤트를 받습니다. 이러한 이벤트는 입력 포커스 획득이 아닌 다른 방법으로 항목이 키보드 잡기를 얻거나 잃는 시점을 감지하는 데 사용할 수 있습니다.
Qt에서 키보드를 명시적으로 잡을 필요는 거의 없습니다. 왜냐하면 Qt는 키보드를 감각적으로 잡았다가 놓기 때문입니다. 특히 Qt는 항목이 입력 포커스를 얻으면 키보드를 잡고, 항목이 입력 포커스를 잃거나 항목이 숨겨지면 키보드를 놓습니다.
보이는 항목만 키보드 입력을 잡을 수 있다는 점에 유의하세요. 보이지 않는 항목에서 grabKeyboard()를 호출해도 아무런 효과가 없습니다.
키보드 이벤트는 영향을 받지 않습니다.
ungrabKeyboard(), grabMouse() 및 setFocus()도 참조하세요 .
void QGraphicsItem::grabMouse()
마우스 입력을 받습니다.
이 항목은 다음 이벤트 중 하나가 발생할 때까지 장면에 대한 모든 마우스 이벤트를 수신합니다:
- 항목이 보이지 않게 됩니다.
- 항목이 장면에서 제거됨
- 항목이 삭제됨
- 항목이 ungrabMouse()를 호출합니다.
- 다른 항목이 grabMouse() 호출; 다른 항목이 ungrabMouse()를 호출하면 항목이 마우스 잡기를 되찾습니다.
항목이 마우스 그랩을 획득하면 QEvent::GrabMouse 이벤트를 받습니다. 마우스 그랩을 잃으면 QEvent::UngrabMouse 이벤트를 받습니다. 이러한 이벤트는 마우스 버튼 이벤트 수신이 아닌 다른 수단을 통해 아이템이 마우스 잡기를 획득하거나 잃는 시점을 감지하는 데 사용할 수 있습니다.
Qt는 감각적으로 마우스를 잡았다 놓기 때문에 Qt에서 마우스를 명시적으로 잡을 필요는 거의 없습니다. 특히 Qt는 사용자가 마우스 버튼을 누르면 마우스를 잡고, 마지막 마우스 버튼을 놓을 때까지 마우스를 잡은 상태를 유지합니다. 또한 Qt::Popup 위젯은 표시되면 암시적으로 grabMouse(), 숨겨지면 ungrabMouse()를 호출합니다.
보이는 항목만 마우스 입력을 잡을 수 있다는 점에 유의하세요. 보이지 않는 항목에서 grabMouse()를 호출하면 아무 효과가 없습니다.
키보드 이벤트는 영향을 받지 않습니다.
QGraphicsScene::mouseGrabberItem(), ungrabMouse() 및 grabKeyboard()도 참조하세요 .
QGraphicsEffect *QGraphicsItem::graphicsEffect() const
이 항목의 효과가 있는 경우 해당 효과에 대한 포인터를 반환하고, 그렇지 않으면 nullptr
.
setGraphicsEffect()도 참조하세요 .
QGraphicsItemGroup *QGraphicsItem::group() const
이 항목의 항목 그룹에 대한 포인터를 반환하거나 이 항목이 그룹의 멤버가 아닌 경우 nullptr
을 반환합니다.
setGroup(), QGraphicsItemGroup, QGraphicsScene::createItemGroup()도 참조하세요 .
bool QGraphicsItem::hasCursor() const
항목에 커서가 설정되어 있으면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
기본적으로 항목에는 커서가 설정되어 있지 않습니다. cursor()는 표준 가리키는 화살표 커서를 반환합니다.
unsetCursor()도 참조하세요 .
bool QGraphicsItem::hasFocus() const
이 항목이 활성화되어 있고 해당 항목 또는 focus proxy 에 키보드 입력 포커스가 있는 경우 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
focusItem(), setFocus(), QGraphicsScene::setFocusItem() 및 isActive()도 참조하세요 .
void QGraphicsItem::hide()
항목을 숨깁니다(항목은 기본적으로 표시됨).
이 편의 함수는 setVisible(false)
을 호출하는 것과 동일합니다.
show() 및 setVisible()도 참조하세요 .
[virtual protected]
void QGraphicsItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 마우스오버 입력 이벤트를 수신할 수 있습니다. 기본 구현은 update()를 호출하며, 그렇지 않으면 아무 작업도 수행하지 않습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출하면 아무런 효과가 없습니다.
hoverMoveEvent(), hoverLeaveEvent(), sceneEvent() 및 setAcceptHoverEvents()도 참조하세요 .
[virtual protected]
void QGraphicsItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 호버링 이탈 이벤트를 수신할 수 있습니다. 기본 구현은 update()를 호출하며, 그렇지 않으면 아무 작업도 수행하지 않습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출하면 아무런 효과가 없습니다.
hoverEnterEvent(), hoverMoveEvent(), sceneEvent() 및 setAcceptHoverEvents()도 참조하세요 .
[virtual protected]
void QGraphicsItem::hoverMoveEvent(QGraphicsSceneHoverEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 마우스오버 이동 이벤트를 수신할 수 있습니다. 기본 구현은 아무 작업도 수행하지 않습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출해도 아무런 효과가 없습니다.
hoverEnterEvent(), hoverLeaveEvent(), sceneEvent() 및 setAcceptHoverEvents()도 참조하세요 .
[virtual protected]
void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 입력 메서드 이벤트를 수신할 수 있습니다. 기본 구현은 이벤트를 무시합니다.
inputMethodQuery() 및 sceneEvent()도 참조하세요 .
Qt::InputMethodHints QGraphicsItem::inputMethodHints() const
이 항목의 현재 입력 방법 힌트를 반환합니다.
입력 방법 힌트는 입력 항목에만 해당됩니다. 힌트는 입력 메서드가 어떻게 작동해야 하는지를 나타내는 데 사용됩니다. 예를 들어, Qt::ImhNumbersOnly 플래그가 설정되어 있으면 입력 메서드는 숫자만 입력할 수 있도록 시각적 구성 요소를 변경할 수 있습니다.
효과는 입력 메서드 구현에 따라 다를 수 있습니다.
setInputMethodHints() 및 inputMethodQuery()도 참조하세요 .
[virtual protected]
QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const
이 메서드는 입력 항목에만 해당됩니다. 입력 메서드가 항목의 속성 집합을 쿼리하여 주변 텍스트 지원 및 재변환과 같은 복잡한 입력 메서드 작업을 지원하는 데 사용됩니다. query 은 쿼리할 속성을 지정합니다.
inputMethodEvent() 및 QInputMethodEvent 을참조하세요 .
void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)
filterItem 에 이 항목에 대한 이벤트 필터를 설치하여 이 항목의 모든 이벤트가 filterItem 의 sceneEventFilter() 함수를 먼저 통과하도록 합니다.
다른 항목의 이벤트를 필터링하려면 이 항목을 다른 항목의 이벤트 필터로 설치합니다. 예:
QGraphicsScene scene; QGraphicsEllipseItem *ellipse = scene.addEllipse(QRectF(-10, -10, 20, 20)); QGraphicsLineItem *line = scene.addLine(QLineF(-10, -10, 20, 20)); line->installSceneEventFilter(ellipse); // line's events are filtered by ellipse's sceneEventFilter() function. ellipse->installSceneEventFilter(line); // ellipse's events are filtered by line's sceneEventFilter() function.
한 항목은 같은 장면에 있는 다른 항목의 이벤트만 필터링할 수 있습니다. 또한 항목은 자체 이벤트를 필터링할 수 없으므로 sceneEvent()를 직접 다시 구현할 수 있습니다.
씬 이벤트 필터를 설치 및 사용하려면 항목이 씬에 속해야 합니다.
removeSceneEventFilter(), sceneEventFilter() 및 sceneEvent()도 참조하세요 .
bool QGraphicsItem::isActive() const
이 항목이 활성화된 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
항목은 장면이 활성화된 경우에만 활성화될 수 있습니다. 항목은 활성 패널의 하위 항목이거나 활성 패널의 하위 항목인 경우 활성화됩니다. 비활성 패널의 항목은 활성화되지 않습니다.
패널의 일부가 아닌 항목은 장면에 활성 패널이 없는 경우 장면 활성화에 따릅니다.
활성 항목만 입력 포커스를 얻을 수 있습니다.
QGraphicsScene::isActive(), QGraphicsScene::activePanel(), panel() 및 isPanel()도 참조하십시오 .
bool QGraphicsItem::isAncestorOf(const QGraphicsItem *child) const
이 항목이 child 의 조상인 경우(즉, 이 항목이 child 의 부모이거나 child 의 부모 조상 중 하나인 경우) true
을 반환합니다.
parentItem()도 참조하세요 .
bool QGraphicsItem::isBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
이 항목이 모달 패널에 의해 차단된 경우 true
을 반환하고, 그렇지 않으면 false를 반환합니다. blockingPanel 이 0이 아닌 경우 blockingPanel 이 항목을 차단하고 있는 모달 패널로 설정됩니다. 이 항목이 차단되어 있지 않으면 blockingPanel 이 함수에 의해 설정되지 않습니다.
이 함수는 장면에 없는 항목의 경우 항상 false
을 반환합니다.
panelModality(), setPanelModality() 및 PanelModality 를참조하세요 .
bool QGraphicsItem::isClipped() const
이 항목이 스크랩된 경우 true
을 반환합니다. 항목이 ItemClipsToShape 플래그를 설정했거나 항목 또는 항목의 상위 항목이 ItemClipsChildrenToShape 플래그를 설정한 경우 항목이 클리핑됩니다.
클리핑은 항목의 모양(예: 그림)과 마우스 및 마우스오버 이벤트 전달에 영향을 줍니다.
clipPath(), shape() 및 setFlags()도 참조하세요 .
bool QGraphicsItem::isEnabled() const
항목이 활성화된 경우 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
setEnabled()도 참조하세요 .
bool QGraphicsItem::isObscured(const QRectF &rect = QRectF()) const
이 함수는 오버로드된 함수입니다.
rect 이 그 위에 있는 충돌하는 항목의 불투명한 모양에 의해 완전히 가려지면(즉, 이 항목보다 Z 값이 더 큰) true
을 반환합니다.
opaqueArea()도 참조하세요 .
bool QGraphicsItem::isObscured(qreal x, qreal y, qreal w, qreal h) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 isObscured(QRectF(x, y, w, h))를 호출하는 것과 동일합니다.
[virtual]
bool QGraphicsItem::isObscuredBy(const QGraphicsItem *item) const
이 항목의 바운딩 사각형이 item 의 불투명한 모양에 완전히 가려지면 true
을 반환합니다.
기본 구현은 item 의 opaqueArea()를 이 항목의 좌표계에 매핑한 다음 이 항목의 boundingRect()가 매핑된 도형 내에 완전히 포함되는지 확인합니다.
이 함수를 다시 구현하여 이 항목이 item 에 의해 가려지는지 여부를 판단하는 사용자 지정 알고리즘을 제공할 수 있습니다.
opaqueArea() 및 isObscured()도 참조하세요 .
bool QGraphicsItem::isPanel() const
항목이 패널인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
QGraphicsItem::panel() 및 ItemIsPanel도 참조하세요 .
bool QGraphicsItem::isSelected() const
이 항목이 선택되어 있으면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
그룹에 있는 항목은 그룹의 선택된 상태를 상속합니다.
항목은 기본적으로 선택되지 않습니다.
setSelected() 및 QGraphicsScene::setSelectionArea()도 참조하세요 .
bool QGraphicsItem::isUnderMouse() const
이 항목이 현재 뷰 중 하나에서 마우스 커서 아래에 있으면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
QGraphicsScene::views() 및 QCursor::pos()도 참조하세요 .
bool QGraphicsItem::isVisible() const
항목이 표시되면 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
항목의 일반적인 표시 여부는 실제로 QGraphicsView 에 의해 시각화되는지 여부와는 관련이 없습니다.
setVisible()도 참조하세요 .
bool QGraphicsItem::isVisibleTo(const QGraphicsItem *parent) const
항목이 parent 에 표시되면 true
을 반환하고, 그렇지 않으면 false를 반환합니다. parent 은 nullptr
일 수 있으며, 이 경우 이 함수는 항목이 장면에 표시되는지 여부를 반환합니다.
isVisible()가 참인 경우에도 항목이 상위 항목에 표시되지 않을 수 있습니다. isVisible ()가 거짓인 경우에도 상위 항목에 표시될 수 있습니다. 상위 항목이 숨겨져 있으면 항목 자체가 암시적으로 숨겨지며, 이 경우 이 함수는 false를 반환합니다.
isVisible() 및 setVisible()도 참조하세요 .
bool QGraphicsItem::isWidget() const
이 항목이 위젯(예: QGraphicsWidget)인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
bool QGraphicsItem::isWindow() const
항목이 QGraphicsWidget 창인 경우 true
을 반환하고, 그렇지 않으면 false를 반환합니다.
QGraphicsWidget::windowFlags()도 참조하세요 .
[virtual protected]
QVariant QGraphicsItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
이 가상 함수는 QGraphicsItem 에서 호출하여 사용자 정의 항목의 일부 상태가 변경되었음을 알립니다. 이 함수를 다시 구현하면 변경에 반응할 수 있으며 경우에 따라 ( change)에 따라 조정을 수행할 수 있습니다.
change 는 변경되는 항목의 매개변수입니다. value 는 새 값이며, 값의 유형은 change 에 따라 다릅니다.
예시:
QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemPositionChange && scene()) { // value is the new position. QPointF newPos = value.toPointF(); QRectF rect = scene()->sceneRect(); if (!rect.contains(newPos)) { // Keep the item inside the scene rect. newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left()))); newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top()))); return newPos; } } return QGraphicsItem::itemChange(change, value); }
기본 구현은 아무 작업도 수행하지 않고 value 을 반환합니다.
참고: 특정 QGraphicsItem 함수는 이 함수의 재구현에서 호출할 수 없습니다. 자세한 내용은 GraphicsItemChange 문서를 참조하세요.
GraphicsItemChange도 참조하세요 .
QTransform QGraphicsItem::itemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
이 항목의 좌표를 other 에 매핑하는 QTransform 을 반환합니다. ok 이 null이 아니고 해당 트랜스폼이 없는 경우 ok 이 가리키는 부울은 false로 설정되고, 그렇지 않은 경우 true로 설정됩니다.
이 변환은 적절한 변환을 반환하여 도형과 좌표를 직접 매핑할 수 있도록 mapToItem() 또는 mapFromItem() 함수에 대한 대안을 제공합니다. 또한 동일한 두 항목 간에 반복적으로 매핑할 때 보다 효율적인 코드를 작성하는 데 도움이 됩니다.
참고: 드문 경우지만 두 항목 사이를 매핑하는 트랜스폼이 없는 경우도 있습니다.
mapToItem(), mapFromItem() 및 deviceTransform()도 참조하세요 .
[virtual protected]
void QGraphicsItem::keyPressEvent(QKeyEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 키 누르기 이벤트를 수신할 수 있습니다. 기본 구현은 이벤트를 무시합니다. 이 핸들러를 다시 구현하면 기본적으로 이벤트가 수락됩니다.
키 이벤트는 ItemIsFocusable 플래그를 설정하고 키보드 입력 포커스가 있는 항목에 대해서만 수신된다는 점에 유의하세요.
keyReleaseEvent(), setFocus(), QGraphicsScene::setFocusItem() 및 sceneEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::keyReleaseEvent(QKeyEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 키 릴리스 이벤트를 수신할 수 있습니다. 기본 구현은 이벤트를 무시합니다. 이 핸들러를 다시 구현하면 기본적으로 이벤트가 수락됩니다.
키 이벤트는 ItemIsFocusable 플래그를 설정하고 키보드 입력 포커스가 있는 항목에 대해서만 수신된다는 점에 유의하세요.
keyPressEvent(), setFocus(), QGraphicsScene::setFocusItem() 및 sceneEvent()도 참조하세요 .
QPainterPath QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
item 의 좌표계에 있는 path 경로를 이 항목의 좌표계에 매핑하고 매핑된 경로를 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapFromScene()와 동일한 경로를 반환합니다.
itemTransform(), mapFromParent(), mapFromScene(), mapToItem() 및 그래픽 보기 좌표계를참조하세요 .
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPointF &point) const
item 의 좌표계에 있는 point 점을 이 항목의 좌표계에 매핑하고 매핑된 좌표를 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapFromScene()와 동일한 좌표를 반환합니다.
itemTransform(), mapFromParent(), mapFromScene(), transform(), mapToItem() 및 그래픽 보기 좌표계도참조하십시오 .
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
item 의 좌표계에 있는 다각형 polygon 을 이 항목의 좌표계에 매핑하고 매핑된 다각형을 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapFromScene()와 동일한 결과를 반환합니다.
itemTransform(), mapToItem(), mapFromParent(), transform() 및 그래픽 보기 좌표계도참조하십시오 .
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, const QRectF &rect) const
item 의 좌표계에 있는 직사각형 rect 을 이 항목의 좌표계에 매핑하고 매핑된 직사각형을 다각형으로 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapFromScene()와 동일한 값을 반환합니다.
itemTransform(), mapToItem(), mapFromParent(), transform() 및 그래픽 보기 좌표계를참조하세요 .
QPolygonF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapFromItem(item, QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QPointF QGraphicsItem::mapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 mapFromItem(item, QPointF(x, y))을 호출하는 것과 동일합니다.
QPainterPath QGraphicsItem::mapFromParent(const QPainterPath &path) const
이 항목의 상위 좌표계에 있는 path 경로를 이 항목의 좌표계에 매핑하고 매핑된 경로를 반환합니다.
mapFromScene(), mapFromItem(), mapToParent() 및 그래픽 보기 좌표계도참조하세요 .
QPointF QGraphicsItem::mapFromParent(const QPointF &point) const
이 항목의 상위 좌표계에 있는 point 점을 이 항목의 좌표계에 매핑하고 매핑된 좌표를 반환합니다.
mapFromItem(), mapFromScene(), transform(), mapToParent() 및 그래픽 보기 좌표계를참조하세요 .
QPolygonF QGraphicsItem::mapFromParent(const QPolygonF &polygon) const
이 항목의 부모 좌표계에 있는 다각형 polygon 을 이 항목의 좌표계에 매핑하고 매핑된 다각형을 반환합니다.
mapToParent(), mapToItem(), transform() 및 그래픽 보기 좌표계를참조하세요 .
QPolygonF QGraphicsItem::mapFromParent(const QRectF &rect) const
이 항목의 상위 좌표계에 있는 직사각형 rect 을 이 항목의 좌표계에 매핑하고 매핑된 직사각형을 다각형으로 반환합니다.
mapToParent(), mapFromItem(), transform() 및 그래픽 보기 좌표계를참조하세요 .
QPolygonF QGraphicsItem::mapFromParent(qreal x, qreal y, qreal w, qreal h) const
이 편의 기능은 mapFromItem(QRectF(x, y, w, h))를 호출하는 것과 동일합니다.
QPointF QGraphicsItem::mapFromParent(qreal x, qreal y) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 mapFromParent(QPointF(x, y))를 호출하는 것과 동일합니다.
QPainterPath QGraphicsItem::mapFromScene(const QPainterPath &path) const
이 항목의 장면 좌표계에 있는 path 경로를 이 항목의 좌표계에 매핑하고 매핑된 경로를 반환합니다.
mapFromParent(), mapFromItem(), mapToScene() 및 그래픽 보기 좌표계를참조하십시오 .
QPointF QGraphicsItem::mapFromScene(const QPointF &point) const
이 항목의 장면 좌표계에 있는 point 점을 이 항목의 좌표계에 매핑하고 매핑된 좌표를 반환합니다.
mapFromItem(), mapFromParent(), transform(), mapToScene() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapFromScene(const QPolygonF &polygon) const
이 항목의 장면 좌표계에 있는 다각형 polygon 을 이 항목의 좌표계에 매핑하고 매핑된 다각형을 반환합니다.
mapToScene(), mapFromParent(), transform() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapFromScene(const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 이 항목의 좌표계에 매핑하고 매핑된 직사각형을 다각형으로 반환합니다.
mapToScene(), mapFromItem(), transform() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapFromScene(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapFromScene(QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QPointF QGraphicsItem::mapFromScene(qreal x, qreal y) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 mapFromScene(QPointF(x, y))을 호출하는 것과 동일합니다.
QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
item 의 좌표계에 있는 직사각형 rect 을 이 항목의 좌표계에 매핑하고 매핑된 직사각형을 새 사각형(즉, 결과 다각형의 경계 사각형)으로 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapRectFromScene()와 동일한 값을 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 뷰 좌표계를참조하세요 .
QRectF QGraphicsItem::mapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapRectFromItem(item, QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QRectF QGraphicsItem::mapRectFromParent(const QRectF &rect) const
이 항목의 상위 좌표계에 있는 사각형 rect 을 이 항목의 좌표계에 매핑하고 매핑된 직사각형을 새 사각형(즉, 결과 다각형의 경계 사각형)으로 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 보기 좌표계를참조하세요 .
QRectF QGraphicsItem::mapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapRectFromParent(QRectF(x, y, w, h))를 호출하는 것과 동일합니다.
QRectF QGraphicsItem::mapRectFromScene(const QRectF &rect) const
장면 좌표에 있는 직사각형 rect 을 이 항목의 좌표계에 매핑하고 매핑된 직사각형을 새 사각형(즉, 결과 다각형의 경계 사각형)으로 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 뷰 좌표계를참조하십시오 .
QRectF QGraphicsItem::mapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapRectFromScene(QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 item 의 좌표계에 매핑하고 매핑된 직사각형을 새 사각형(즉, 결과 다각형의 경계 사각형)으로 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapRectToScene()와 동일한 값을 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 뷰 좌표계를참조하세요 .
QRectF QGraphicsItem::mapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapRectToItem(item, QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QRectF QGraphicsItem::mapRectToParent(const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 상위 좌표계에 매핑하고 매핑된 직사각형을 새 사각형(즉, 결과 다각형의 경계 사각형)으로 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 보기 좌표계를참조하세요 .
QRectF QGraphicsItem::mapRectToParent(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapRectToParent(QRectF(x, y, w, h))를 호출하는 것과 동일합니다.
QRectF QGraphicsItem::mapRectToScene(const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 장면 좌표계에 매핑하고 매핑된 직사각형을 새 사각형(즉, 결과 다각형의 경계 사각형)으로 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 뷰 좌표계를참조하십시오 .
QRectF QGraphicsItem::mapRectToScene(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapRectToScene(QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QPainterPath QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPainterPath &path) const
이 항목의 좌표계에 있는 경로 path 를 item 의 좌표계에 매핑하고 매핑된 경로를 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapToScene()와 동일한 경로를 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 보기 좌표계를참조하세요 .
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPointF &point) const
이 항목의 좌표계에 있는 point 점을 item 의 좌표계에 매핑하고 매핑된 좌표를 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapToScene()와 동일한 좌표를 반환합니다.
itemTransform(), mapToParent(), mapToScene(), transform(), mapFromItem() 및 그래픽 보기 좌표계도참조하십시오 .
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
이 항목의 좌표계에 있는 다각형 polygon 을 item 의 좌표계에 매핑하고 매핑된 다각형을 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapToScene()와 동일한 결과를 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 보기 좌표계도참조하십시오 .
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 item 의 좌표계에 매핑하고 매핑된 직사각형을 다각형으로 반환합니다.
item 가 nullptr
인 경우 이 함수는 mapToScene()와 동일한 값을 반환합니다.
itemTransform(), mapToParent(), mapToScene(), mapFromItem() 및 그래픽 보기 좌표계도참조하십시오 .
QPolygonF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 맵투아이템(item, QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QPointF QGraphicsItem::mapToItem(const QGraphicsItem *item, qreal x, qreal y) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 mapToItem(item, QPointF(x, y))을 호출하는 것과 동일합니다.
QPainterPath QGraphicsItem::mapToParent(const QPainterPath &path) const
이 항목의 좌표계에 있는 path 경로를 부모의 좌표계에 매핑하고 매핑된 경로를 반환합니다. 항목에 부모가 없는 경우 path 이 장면의 좌표계에 매핑됩니다.
mapToScene(), mapToItem(), mapFromParent() 및 그래픽 보기 좌표계를참조하십시오 .
QPointF QGraphicsItem::mapToParent(const QPointF &point) const
이 항목의 좌표계에 있는 point 점을 부모의 좌표계에 매핑하고 매핑된 좌표를 반환합니다. 항목에 부모가 없는 경우 point 이 장면의 좌표계에 매핑됩니다.
mapToItem(), mapToScene(), transform(), mapFromParent() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapToParent(const QPolygonF &polygon) const
이 항목의 좌표계에 있는 다각형 polygon 을 부모의 좌표계에 매핑하고 매핑된 다각형을 반환합니다. 항목에 부모가 없는 경우 polygon 이 장면의 좌표계에 매핑됩니다.
mapToScene(), mapToItem(), mapFromParent() 및 그래픽 뷰 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapToParent(const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 부모의 좌표계에 매핑하고 매핑된 직사각형을 다각형으로 반환합니다. 항목에 부모가 없는 경우 rect 이 장면의 좌표계에 매핑됩니다.
mapToScene(), mapToItem(), mapFromParent() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapToParent(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 맵투부모(QRectF(x, y, w, h))를 호출하는 것과 동일합니다.
QPointF QGraphicsItem::mapToParent(qreal x, qreal y) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 mapToParent(QPointF(x, y))를 호출하는 것과 같습니다.
QPainterPath QGraphicsItem::mapToScene(const QPainterPath &path) const
이 항목의 좌표계에 있는 path 경로를 장면의 좌표계에 매핑하고 매핑된 경로를 반환합니다.
mapToParent(), mapToItem(), mapFromScene() 및 그래픽 보기 좌표계를참조하십시오 .
QPointF QGraphicsItem::mapToScene(const QPointF &point) const
이 항목의 좌표계에 있는 point 점을 장면의 좌표계에 매핑하고 매핑된 좌표를 반환합니다.
mapToItem(), mapToParent(), transform(), mapFromScene() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapToScene(const QPolygonF &polygon) const
이 항목의 좌표계에 있는 다각형 polygon 을 장면의 좌표계에 매핑하고 매핑된 다각형을 반환합니다.
mapToParent(), mapToItem(), mapFromScene() 및 그래픽 뷰 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapToScene(const QRectF &rect) const
이 항목의 좌표계에 있는 직사각형 rect 을 장면의 좌표계에 매핑하고 매핑된 직사각형을 다각형으로 반환합니다.
mapToParent(), mapToItem(), mapFromScene() 및 그래픽 보기 좌표계를참조하십시오 .
QPolygonF QGraphicsItem::mapToScene(qreal x, qreal y, qreal w, qreal h) const
이 편의 함수는 mapToScene(QRectF(x, y, w, h))을 호출하는 것과 동일합니다.
QPointF QGraphicsItem::mapToScene(qreal x, qreal y) const
이 함수는 오버로드된 함수입니다.
이 편의 함수는 mapToScene(QPointF(x, y))을 호출하는 것과 동일합니다.
[virtual protected]
void QGraphicsItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 마우스 더블 클릭 이벤트를 수신할 수 있습니다.
항목을 두 번 클릭하면 해당 항목은 먼저 마우스 누르기 이벤트를 수신한 다음 해제 이벤트(즉, 클릭), 두 번 클릭 이벤트, 마지막으로 해제 이벤트를 수신합니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출해도 아무런 효과가 없습니다.
기본 구현은 mousePressEvent()를 호출합니다. 이 함수를 재구현할 때 기본 구현을 유지하려면 재구현에서 QGraphicsItem::mouseDoubleClickEvent()를 호출하세요.
항목이 selectable 또는 movable 이 아닌 경우 더블 클릭 이벤트를 수신하지 않습니다(이 경우 마우스 한 번 클릭은 무시되므로 더블 클릭 생성이 중지됩니다).
mousePressEvent(), mouseMoveEvent(), mouseReleaseEvent() 및 sceneEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 마우스 이동 이벤트를 수신할 수 있습니다. 이 이벤트를 수신하면 이 항목이 마우스 누르기 이벤트도 수신했으며 이 항목이 현재 마우스 그래버인지 확인할 수 있습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출해도 아무런 효과가 없습니다.
기본 구현은 선택 및 이동과 같은 기본적인 항목 상호 작용을 처리합니다. 이 함수를 재구현할 때 기본 구현을 유지하려면 재구현에서 QGraphicsItem::mouseMoveEvent()를 호출하세요.
mousePressEvent()는 마우스 이벤트를 수신하는 그래픽 항목을 결정한다는 점에 유의하세요. 자세한 내용은 mousePressEvent() 설명을 참조하세요.
mousePressEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() 및 sceneEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 마우스 누름 이벤트를 수신할 수 있습니다. 마우스 누름 이벤트는 눌린 마우스 버튼을 수락하는 항목에만 전달됩니다. 기본적으로 항목은 모든 마우스 버튼을 허용하지만 setAcceptedMouseButtons()를 호출하여 이를 변경할 수 있습니다.
마우스 누름 이벤트는 마우스 그래버가 될 항목을 결정합니다( QGraphicsScene::mouseGrabberItem() 참조). 이 기능을 다시 구현하지 않으면 마우스 누르기 이벤트가 이 항목 아래의 최상위 항목으로 전파되며 다른 마우스 이벤트는 이 항목으로 전달되지 않습니다.
event 이 기능을 다시 구현하면 기본적으로 QEvent::accept() 참조)이 수락되고 이 항목이 마우스 그래버가 됩니다. 이렇게 하면 항목이 향후 이동, 놓기 및 더블 클릭 이벤트를 수신할 수 있습니다. event 에서 QEvent::ignore()를 호출하면 이 항목은 마우스 그래버를 잃게 되고 event 는 그 아래 최상위 항목으로 전파됩니다. 새로운 마우스 누르기 이벤트가 수신되지 않는 한 이 항목에 더 이상 마우스 이벤트가 전달되지 않습니다.
기본 구현은 선택 및 이동과 같은 기본적인 항목 상호 작용을 처리합니다. 이 함수를 재구현할 때 기본 구현을 유지하려면 재구현에서 QGraphicsItem::mousePressEvent()를 호출하세요.
이벤트는 movable 이나 selectable 이 아닌 항목의 경우 QEvent::ignore()입니다.
mouseMoveEvent(), mouseReleaseEvent(), mouseDoubleClickEvent() 및 sceneEvent()도 참조하세요 .
[virtual protected]
void QGraphicsItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 마우스 릴리스 이벤트를 수신할 수 있습니다.
event 에서 QEvent::ignore() 또는 QEvent::accept()을 호출해도 아무런 효과가 없습니다.
기본 구현은 선택 및 이동과 같은 기본적인 항목 상호 작용을 처리합니다. 이 함수를 재구현할 때 기본 구현을 유지하려면 재구현에서 QGraphicsItem::mouseReleaseEvent()를 호출하세요.
mousePressEvent()는 마우스 이벤트를 수신하는 그래픽 항목을 결정한다는 점에 유의하세요. 자세한 내용은 mousePressEvent() 설명을 참조하세요.
mousePressEvent(), mouseMoveEvent(), mouseDoubleClickEvent() 및 sceneEvent()도 참조하세요 .
void QGraphicsItem::moveBy(qreal dx, qreal dy)
항목을 가로로 dx 포인트, 세로로 dy 포인트 이동합니다. 이 함수는 setPos(pos() + QPointF(dx, dy))를 호출하는 것과 동일합니다.
qreal QGraphicsItem::opacity() const
이 항목의 로컬 불투명도를 0.0(투명)에서 1.0(불투명) 사이의 값으로 반환합니다. 이 값은 부모 및 상위 값과 결합되어 effectiveOpacity(). 유효 불투명도는 항목이 렌더링되는 방식을 결정하며 QGraphicsView::items()와 같은 함수로 쿼리할 때 가시성에도 영향을 줍니다.
불투명도 속성은 paint() 함수에 전달되는 페인터의 상태를 결정합니다. 항목이 캐시된 경우(예: ItemCoordinateCache 또는 DeviceCoordinateCache) 항목이 렌더링될 때 유효 속성이 항목의 캐시에 적용됩니다.
기본 불투명도는 1.0(완전 불투명)입니다.
setOpacity(), paint(), ItemIgnoresParentOpacity, 및 ItemDoesntPropagateOpacityToChildren 을참조하세요 .
[virtual]
QPainterPath QGraphicsItem::opaqueArea() const
이 가상 함수는 이 항목이 불투명한 영역을 나타내는 도형을 반환합니다. 불투명 브러시 또는 색상을 사용하여 채워진 경우(즉, 투명하지 않은 경우) 영역이 불투명합니다.
이 함수는 isObscuredBy()에서 사용되며, 이 함수는 기본 항목이 이 항목에 의해 가려졌는지 확인하기 위해 호출됩니다.
기본 구현은 이 항목이 완전히 투명하고 다른 항목을 가리지 않음을 나타내는 빈 QPainterPath 을 반환합니다.
isObscuredBy(), isObscured() 및 shape()도 참조하세요 .
[pure virtual]
void QGraphicsItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr)
이 함수는 일반적으로 QGraphicsView 에 의해 호출되며, 항목의 내용을 로컬 좌표로 페인트합니다.
QGraphicsItem 서브클래스에서 이 함수를 다시 구현하여 painter 을 사용하여 항목의 페인팅 구현을 제공합니다. option 매개변수는 항목의 상태, 노출 영역 및 세부 수준 힌트와 같은 스타일 옵션을 제공합니다. widget 인수는 선택 사항입니다. 제공되면 페인팅 중인 위젯을 가리키고, 그렇지 않으면 0입니다. 캐시된 페인팅의 경우 widget 은 항상 0입니다.
void RoundRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { painter->drawRoundedRect(-10, -10, 20, 20, 5, 5); }
페인터의 펜은 기본적으로 0 너비이며, 펜은 페인트 장치의 팔레트에서 QPalette::Text 브러시로 초기화됩니다. 브러시는 QPalette::Window 로 초기화됩니다.
아티팩트가 렌더링되지 않도록 모든 페인팅을 boundingRect() 경계 안쪽으로 제한해야 합니다( QGraphicsView 은 페인터를 잘라내지 않으므로). 특히 QPainter 에서 지정된 QPen 을 사용하여 도형의 윤곽선을 렌더링하는 경우 윤곽선의 절반은 렌더링하는 도형의 바깥쪽에, 절반은 안쪽에 그려집니다(예: 펜 폭이 2단위인 경우 boundingRect() 안쪽에 1단위만큼 윤곽선을 그려야 함). QGraphicsItem 은 폭이 0이 아닌 화장용 펜의 사용을 지원하지 않습니다.
모든 페인팅은 로컬 좌표로 이루어집니다.
참고: update()를 호출하지 않는 한 항목은 항상 똑같은 방식으로 다시 그려야 하며, 그렇지 않으면 시각적 아티팩트가 발생할 수 있습니다. 즉, paint()를 두 번 호출하면 그 사이에 update()가 호출되지 않는 한 항상 동일한 출력을 생성해야 합니다.
참고: 항목에 대해 캐싱을 활성화해도 update()를 명시적으로 호출하지 않더라도 그래픽 보기 프레임워크에서 paint()가 한 번만 호출된다는 보장은 없습니다. 자세한 내용은 setCacheMode() 문서를 참조하세요.
setCacheMode(), QPen::width(), 항목 좌표 및 ItemUsesExtendedStyleOption 를참조하세요 .
QGraphicsItem *QGraphicsItem::panel() const
항목의 패널을 반환하거나 이 항목에 패널이 없는 경우 nullptr
을 반환합니다. 항목이 패널인 경우 그 자체를 반환합니다. 그렇지 않으면 패널인 가장 가까운 조상을 반환합니다.
isPanel() 및 ItemIsPanel 를참조하세요 .
QGraphicsItem::PanelModality QGraphicsItem::panelModality() const
이 항목의 모달리티를 반환합니다.
setPanelModality()도 참조하세요 .
QGraphicsItem *QGraphicsItem::parentItem() const
이 항목의 상위 항목에 대한 포인터를 반환합니다. 이 항목에 부모 항목이 없는 경우 nullptr
가 반환됩니다.
setParentItem() 및 childItems()도 참조하세요 .
QGraphicsObject *QGraphicsItem::parentObject() const
항목의 부모에 대한 포인터를 반환하고 QGraphicsObject 로 캐스팅합니다. 부모 항목이 QGraphicsObject 이 아닌 경우 nullptr
을 반환합니다.
parentItem() 및 childItems()도 참조하세요 .
QGraphicsWidget *QGraphicsItem::parentWidget() const
항목의 부모 위젯에 대한 포인터를 반환합니다. 항목의 부모 위젯은 위젯인 가장 가까운 부모 항목입니다.
parentItem() 및 childItems()도 참조하세요 .
QPointF QGraphicsItem::pos() const
항목의 위치를 부모 좌표로 반환합니다. 항목에 부모가 없는 경우 해당 위치는 장면 좌표로 제공됩니다.
항목의 위치는 부모 좌표에서 원점(로컬 좌표 (0, 0))을 나타내며, 이 함수는 mapToParent(0, 0)과 동일하게 반환합니다.
편의를 위해 scenePos()를 호출하여 부모 좌표에 관계없이 장면 좌표에서 항목의 위치를 확인할 수도 있습니다.
x(), y(), setPos(), transform() 및 그래픽 뷰 좌표계를참조하십시오 .
[protected]
void QGraphicsItem::prepareGeometryChange()
지오메트리 변경을 위해 항목을 준비합니다. 항목의 경계 사각형을 변경하기 전에 이 함수를 호출하여 QGraphicsScene 의 인덱스를 최신 상태로 유지하세요.
준비 지오메트리 변경()은 필요한 경우 update()를 호출합니다.
예시:
void CircleItem::setRadius(qreal newRadius) { if (radius != newRadius) { prepareGeometryChange(); radius = newRadius; } }
boundingRect()도 참조하세요 .
void QGraphicsItem::removeSceneEventFilter(QGraphicsItem *filterItem)
filterItem 에서 이 항목의 이벤트 필터를 제거합니다.
installSceneEventFilter()도 참조하세요 .
void QGraphicsItem::resetTransform()
이 항목의 변환 행렬을 아이덴티티 행렬로 또는 모든 변환 속성을 기본값으로 재설정합니다. 이는 setTransform(QTransform())
을 호출하는 것과 같습니다.
setTransform() 및 transform()도 참조하세요 .
qreal QGraphicsItem::rotation() const
Z축을 중심으로 한 시계 방향 회전을 도 단위로 반환합니다. 기본값은 0입니다(즉, 항목이 회전되지 않음).
회전은 항목의 scale(), transform() 및 transformations()와 결합되어 항목의 좌표계를 상위 항목에 매핑합니다.
setRotation(), transformOriginPoint() 및 Transformations 를참조하세요 .
qreal QGraphicsItem::scale() const
항목의 배율을 반환합니다. 기본 배율은 1.0입니다(즉, 항목이 배율이 적용되지 않음).
배율은 항목의 rotation(), transform() 및 transformations()와 결합하여 항목의 좌표계를 상위 항목에 매핑합니다.
setScale(), rotation() 및 Transformations 를참조하세요 .
QGraphicsScene *QGraphicsItem::scene() const
항목의 현재 장면을 반환하거나 항목이 장면에 저장되어 있지 않은 경우 nullptr
을 반환합니다.
씬에 항목을 추가하거나 이동하려면 QGraphicsScene::addItem()를 호출합니다.
QRectF QGraphicsItem::sceneBoundingRect() const
sceneTransform()와 boundingRect()를 결합하여 이 항목의 경계 직사각형을 장면 좌표로 반환합니다.
boundingRect() 및 그래픽 뷰 좌표계를참조하십시오 .
[virtual protected]
bool QGraphicsItem::sceneEvent(QEvent *event)
이 가상 함수는 이 항목에 대한 이벤트를 수신합니다. 이 함수를 다시 구현하여 이벤트가 특수 이벤트 핸들러 contextMenuEvent(), focusInEvent(), focusOutEvent(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent(), keyPressEvent(), keyReleaseEvent(), mousePressEvent(), mouseReleaseEvent(), mouseMoveEvent() 및 mouseDoubleClickEvent()로 발송되기 전에 가로채세요.
이벤트가 인식되어 처리된 경우 true
를 반환하고, 그렇지 않은 경우(예: 이벤트 유형이 인식되지 않은 경우) false 를 반환합니다.
event 는 인터셉트된 이벤트입니다.
[virtual protected]
bool QGraphicsItem::sceneEventFilter(QGraphicsItem *watched, QEvent *event)
watched 항목에 대한 이벤트를 필터링합니다. event 은 필터링된 이벤트입니다.
이 함수를 하위 클래스에서 다시 구현하면 해당 항목이 다른 항목의 이벤트 필터로 사용되어 해당 항목으로 전송된 모든 이벤트가 응답하기 전에 가로채도록 할 수 있습니다.
다시 구현하면 주어진 이벤트가 더 이상 처리되지 않도록 참을 반환하여 감시 대상 항목에 전달되지 않도록 하거나, 이벤트 시스템에서 이벤트를 더 전파해야 함을 나타내려면 거짓을 반환해야 합니다.
installSceneEventFilter()도 참조하세요 .
QPointF QGraphicsItem::scenePos() const
항목의 위치를 장면 좌표로 반환합니다. 이는 mapToScene(0, 0)
을 호출하는 것과 동일합니다.
pos(), sceneTransform() 및 그래픽 뷰 좌표계를참조하십시오 .
QTransform QGraphicsItem::sceneTransform() const
이 항목의 씬 변환 행렬을 반환합니다. 이 행렬은 이 항목의 로컬 좌표계에서 장면의 좌표계로 좌표 및 기하학적 도형을 매핑하는 데 사용할 수 있습니다. 씬에서 좌표를 매핑하려면 먼저 반환된 행렬을 반전해야 합니다.
예시:
QGraphicsRectItem rect; rect.setPos(100, 100); rect.sceneTransform().map(QPointF(0, 0)); // returns QPointF(100, 100); rect.sceneTransform().inverted().map(QPointF(100, 100)); // returns QPointF(0, 0);
항목의 로컬 변환만 반환하는 transform()와 달리 이 함수는 항목(및 모든 부모)의 위치 및 모든 변환 속성을 포함합니다.
transform(), setTransform(), scenePos(), 그래픽 보기 좌표계 및 Transformations 을참조하세요 .
void QGraphicsItem::scroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
rect 의 콘텐츠를 dx, dy 로 스크롤합니다. rect 이 널 직사각형(기본값)인 경우 항목의 경계 직사각형이 스크롤됩니다.
스크롤은 항목의 내용(또는 항목의 일부)이 세로 또는 가로로 이동할 때 단순히 다시 그리는 것보다 빠른 대안을 제공합니다. 현재 변환 및 페인트 장치(예: 뷰포트)의 기능에 따라 이 작업은 memmove()를 사용하여 단순히 한 위치에서 다른 위치로 픽셀을 이동하는 것으로 구성될 수 있습니다. 대부분의 경우 전체 영역을 다시 렌더링하는 것보다 빠릅니다.
스크롤 후 항목은 새로 노출된 영역에 대한 업데이트를 실행합니다. 스크롤이 지원되지 않는 경우(예: 스크롤 최적화의 이점이 없는 OpenGL 뷰포트에 렌더링하는 경우) 이 함수는 update(rect)를 호출하는 것과 동일합니다.
참고: 스크롤은 QGraphicsItem::ItemCoordinateCache 이 활성화된 경우에만 지원되며, 다른 모든 경우 이 함수를 호출하는 것은 update(rect)를 호출하는 것과 동일합니다. 항목이 불투명하고 다른 항목과 겹치지 않는다는 것을 확실히 알고 있는 경우 rect 을 뷰포트 좌표에 매핑하고 뷰포트를 스크롤할 수 있습니다.
QTransform xform = item->deviceTransform(view->viewportTransform()); QRect deviceRect = xform.mapRect(rect).toAlignedRect(); view->viewport()->scroll(dx, dy, deviceRect);
boundingRect()도 참조하세요 .
void QGraphicsItem::setAcceptDrops(bool on)
on 가 참이면 이 항목은 끌어서 놓기 이벤트를 허용하고, 그렇지 않으면 끌어서 놓기 이벤트에 대해 투명합니다. 기본적으로 항목은 끌어서 놓기 이벤트를 허용하지 않습니다.
acceptDrops()도 참조하세요 .
void QGraphicsItem::setAcceptHoverEvents(bool enabled)
enabled 가 참이면 이 항목은 마우스오버 이벤트를 허용하고, 그렇지 않으면 무시합니다. 기본적으로 항목은 마우스오버 이벤트를 받지 않습니다.
현재 마우스 그래버 항목이 없을 때 호버 이벤트가 전달됩니다. 마우스 커서가 항목에 들어갈 때, 항목 내부를 이동할 때, 커서가 항목에서 벗어날 때 이벤트가 전송됩니다. 호버 이벤트는 일반적으로 항목이 입력되었을 때 항목을 강조 표시하고 마우스 커서가 항목 위에 있을 때 마우스 커서를 추적하는 데 사용됩니다( QWidget::mouseTracking)에 해당).
상위 항목은 자식보다 먼저 마우스오버 진입 이벤트를 수신하고 자식보다 나중에 마우스오버 이탈 이벤트를 수신합니다. 그러나 커서가 자식 항목에 들어가면 부모 항목은 커서 이탈 이벤트를 받지 않으며, 부모 항목은 커서가 자식 항목을 포함하여 해당 영역을 벗어날 때까지 "커서가 있는" 상태를 유지합니다.
부모 항목이 자식 이벤트를 처리하는 경우 커서가 자식을 통과할 때 호버 이동, 드래그 이동 및 드롭 이벤트를 받지만 자식을 대신하여 호버 진입 및 호버 이탈, 드래그 진입 및 드래그 이탈 이벤트를 받지는 않습니다.
창 장식이 있는 QGraphicsWidget 는 acceptHoverEvents() 값에 관계없이 마우스오버 이벤트를 받습니다.
acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent() 및 hoverLeaveEvent()도 참조하세요 .
void QGraphicsItem::setAcceptTouchEvents(bool enabled)
enabled 이 참이면 이 항목은 touch events 을 수락하고, 그렇지 않으면 무시합니다. 기본적으로 항목은 터치 이벤트를 허용하지 않습니다.
acceptTouchEvents()도 참조하세요 .
void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
이 항목이 마우스 이벤트를 허용할 마우스 buttons 를 설정합니다.
기본적으로 모든 마우스 버튼이 허용됩니다. 항목이 마우스 버튼을 수락하는 경우 해당 버튼에 대한 마우스 누름 이벤트가 전달되면 해당 항목이 마우스 그래버 항목이 됩니다. 그러나 항목이 마우스 버튼을 수락하지 않는 경우 QGraphicsScene 은 마우스 이벤트를 수락하는 그 아래의 첫 번째 항목으로 마우스 이벤트를 전달합니다.
항목에 대한 마우스 이벤트를 비활성화하려면(즉, 마우스 이벤트가 투명하게 표시되도록 하려면) setAcceptedMouseButtons(Qt::NoButton)를 호출합니다.
acceptedMouseButtons() 및 mousePressEvent()도 참조하세요 .
void QGraphicsItem::setActive(bool active)
active 가 참이고 장면이 활성화되어 있으면 이 항목의 패널이 활성화됩니다. 그렇지 않으면 패널이 비활성화됩니다.
항목이 활성 장면의 일부가 아닌 경우 active 에 따라 장면이 활성화되거나 항목이 장면에 추가될 때 패널이 어떻게 될지 결정됩니다. true이면 항목이 장면에 추가되거나 장면이 활성화될 때 항목의 패널이 활성화됩니다. 그렇지 않으면 항목은 장면의 활성화 상태와 관계없이 비활성 상태로 유지됩니다.
isPanel(), QGraphicsScene::setActivePanel() 및 QGraphicsScene::isActive()도 참조하십시오 .
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
경계 영역 세분성을 granularity, 0에서 1 사이의 값으로 설정합니다. 기본값은 0(즉, 가장 낮은 세분성, 경계 영역이 항목의 경계 사각형에 해당)입니다.
세분성은 boundingRegion()에서 항목의 경계 영역이 얼마나 미세해야 하는지 계산하는 데 사용됩니다. 달성 가능한 최고 세분성은 1이며, boundingRegion()는 해당 장치에 대해 가능한 가장 미세한 윤곽선을 반환합니다(예: QGraphicsView 뷰포트의 경우 픽셀 단위의 완벽한 경계 영역을 제공합니다). granularity 값은 디바이스 해상도와 경계 영역의 해상도 사이의 비율을 나타냅니다(예: 0.25 값은 각 청크가 4x4 디바이스 단위/픽셀에 해당하는 영역을 제공합니다).
boundingRegionGranularity()도 참조하세요 .
void QGraphicsItem::setCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
항목의 캐시 모드를 mode 로 설정합니다.
선택적 logicalCacheSize 인수는 ItemCoordinateCache 모드에서만 사용되며 캐시 버퍼의 해상도를 나타냅니다. logicalCacheSize 가 (100, 100)인 경우 QGraphicsItem 는 항목 자체의 논리적 크기에 관계없이 항목을 그래픽 메모리의 100x100 픽셀에 맞춥니다. 기본적으로 QGraphicsItem 은 boundingRect() 크기를 사용합니다. ItemCoordinateCache , logicalCacheSize 이외의 다른 모든 캐시 모드의 경우 은 무시됩니다.
캐시를 사용하면 항목 자체를 다시 그리는 데 상당한 시간이 소요되는 경우 렌더링 속도를 높일 수 있습니다. 경우에 따라 캐시로 인해 렌더링 속도가 느려질 수 있으며, 특히 QGraphicsItem 가 캐시에서 다시 그리는 시간보다 항목이 다시 그리는 시간이 짧은 경우 렌더링 속도가 느려질 수 있습니다.
캐싱이 활성화되면 항목의 paint() 함수는 일반적으로 화면 밖의 픽셀맵 캐시에 그려지며, 이후 다시 그리기 요청이 있을 경우 그래픽 보기 프레임워크가 캐시에서 다시 그립니다. 이 접근 방식은 모든 캐시를 OpenGL 텍스처로 저장하는 QGLWidget에서 특히 잘 작동합니다.
최적의 성능을 얻으려면 QPixmapCache 의 캐시 제한을 변경해야 할 수도 있습니다.
다양한 캐시 모드에 대한 자세한 내용은 CacheMode 문서에서 확인할 수 있습니다.
참고: 캐싱을 활성화한다고 해서 항목의 paint() 함수가 명시적인 update() 호출에 대한 응답으로만 호출된다는 의미는 아닙니다. 예를 들어, 메모리 압박이 있을 때 Qt는 일부 캐시 정보를 삭제하기로 결정할 수 있으며, 이러한 경우 update() 호출이 없더라도 항목의 paint() 함수가 호출됩니다 (즉, 캐싱을 활성화하지 않은 것과 똑같이).
cacheMode(), CacheMode, QPixmapCache::setCacheLimit()도 참조하세요 .
void QGraphicsItem::setCursor(const QCursor &cursor)
항목의 현재 커서 모양을 cursor 으로 설정합니다. 마우스 커서가 이 항목 위에 있을 때 이 모양을 취합니다. 유용한 다양한 모양은 list of predefined cursor objects 을 참조하세요.
편집기 항목은 I-빔 커서를 사용할 수 있습니다:
item->setCursor(Qt::IBeamCursor);
커서가 설정되지 않은 경우 아래 항목의 커서가 사용됩니다.
cursor(), hasCursor(), unsetCursor(), QWidget::cursor, 및 QGuiApplication::overrideCursor()도 참조하세요 .
void QGraphicsItem::setData(int key, const QVariant &value)
key 키에 대한 이 항목의 사용자 지정 데이터를 value 으로 설정합니다.
사용자 정의 항목 데이터는 모든 항목에 대한 임의의 속성을 저장하는 데 유용합니다. Qt는 이 기능을 데이터 저장에 사용하지 않으며, 사용자의 편의를 위해서만 제공됩니다.
data()도 참조하십시오 .
void QGraphicsItem::setEnabled(bool enabled)
enabled 이 참이면 항목이 활성화되고, 그렇지 않으면 비활성화됩니다.
비활성화된 항목은 표시되지만 어떤 이벤트도 수신하지 않으며 포커스를 잡거나 선택할 수 없습니다. 마우스 이벤트는 삭제되며, 항목이 보이지 않거나 마우스 이벤트를 받지 않는 경우가 아니면 전파되지 않습니다( acceptedMouseButtons() 참조). 비활성화된 아이템은 마우스 잡기가 될 수 없으며, 그 결과 마우스를 잡을 때 비활성화되면 포커스가 있을 때 포커스를 잃는 것처럼 아이템이 비활성화되면 잡기를 잃게 됩니다.
비활성화된 항목은 일반적으로 회색으로 표시됩니다( QPalette::Disabled 참조 ).
상위 항목을 비활성화하면 모든 하위 항목도 비활성화됩니다. 부모 항목을 활성화하면 명시적으로 비활성화하지 않는 한 모든 자식이 활성화됩니다(즉, 자식에 대해 setEnabled(false)를 호출하는 경우 부모가 비활성화되었다가 다시 활성화되면 다시 활성화되지 않습니다).
항목은 기본적으로 활성화되어 있습니다.
참고: 이벤트 필터를 설치한 경우에도 이벤트가 항목에 전달되기 전에 이벤트를 가로챌 수 있으며, 이 메커니즘은 항목의 활성화 상태를 무시합니다.
isEnabled()도 참조하세요 .
void QGraphicsItem::setFiltersChildEvents(bool enabled)
enabled 이 참이면 이 항목은 모든 자식에 대한 모든 이벤트를 필터링하도록 설정되며(즉, 모든 자식에 대한 모든 이벤트가 이 항목으로 대신 전송됨), 그렇지 않고 enabled 이 거짓이면 이 항목은 자체 이벤트만 처리합니다. 기본값은 false입니다.
filtersChildEvents()도 참조하세요 .
void QGraphicsItem::setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
enabled 이 참이면 항목 플래그 flag 가 활성화되고, 그렇지 않으면 비활성화됩니다.
void QGraphicsItem::setFlags(QGraphicsItem::GraphicsItemFlags flags)
항목 플래그를 flags 로 설정합니다. flags 에 있는 모든 플래그는 활성화되고 flags 에 없는 모든 플래그는 비활성화됩니다.
항목에 포커스가 있고 flags 이 ItemIsFocusable 을 활성화하지 않는 경우 이 함수를 호출하면 항목은 포커스를 잃게 됩니다. 마찬가지로 항목이 선택되어 있고 flags 이 ItemIsSelectable 을 활성화하지 않은 경우 항목은 자동으로 선택 해제됩니다.
기본적으로 플래그는 활성화되지 않습니다. (QGraphicsWidget 은 위치 변경을 추적하기 위해 기본적으로 ItemSendsGeometryChanges 플래그를 활성화합니다.)
void QGraphicsItem::setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
이 항목에 키보드 입력 포커스를 부여합니다. focusReason 인수는 이 함수에 의해 생성된 focus event 에 전달되며, 항목이 포커스를 받게 된 원인에 대한 설명을 제공하는 데 사용됩니다.
ItemIsFocusable 플래그를 설정한 활성화된 항목만 키보드 포커스를 받을 수 있습니다.
이 항목이 보이지 않거나 활성화되지 않았거나 장면과 연결되지 않은 경우 즉시 입력 포커스를 얻지 못합니다. 그러나 나중에 항목이 표시되는 경우 해당 하위 트리의 기본 포커스 항목으로 등록됩니다.
이 함수를 호출하면 이 항목은 focusReason 과 함께 focus in event 을 받게 됩니다. 다른 항목에 이미 포커스가 있는 경우 해당 항목은 먼저 입력 포커스를 잃었음을 나타내는 focus out event 을 받게 됩니다.
clearFocus(), hasFocus(), focusItem() 및 focusProxy()도 참조하세요 .
void QGraphicsItem::setFocusProxy(QGraphicsItem *item)
항목의 포커스 프록시를 item 로 설정합니다.
항목에 포커스 프록시가 있는 경우 항목이 입력 포커스를 받을 때 포커스 프록시는 입력 포커스를 받습니다. 항목 자체는 여전히 포커스를 갖지만(즉, hasFocus()는 참을 반환합니다) 포커스 프록시만 키보드 입력을 받습니다.
포커스 프록시 자체에 포커스 프록시를 가질 수도 있습니다. 이 경우 키보드 입력은 가장 바깥쪽 포커스 프록시에서 처리됩니다.
포커스 프록시 item 는 이 항목과 동일한 장면에 속해야 합니다.
focusProxy(), setFocus() 및 hasFocus()도 참조하세요 .
void QGraphicsItem::setGraphicsEffect(QGraphicsEffect *effect)
effect 을 항목의 효과로 설정합니다. 이 항목에 이미 효과가 설치되어 있는 경우 QGraphicsItem 은 새 effect 을 설치하기 전에 기존 효과를 삭제합니다. 기존 효과는 setGraphicsEffect(nullptr
)를 호출하여 삭제할 수 있습니다.
effect 이 다른 항목에 설치된 효과인 경우 setGraphicsEffect()는 해당 항목에서 효과를 제거하고 이 항목에 설치합니다.
QGraphicsItem 는 effect 의 소유권을 가져옵니다.
참고: 이 함수는 자신과 모든 하위 항목에 효과를 적용합니다.
graphicsEffect()도 참조하세요 .
void QGraphicsItem::setGroup(QGraphicsItemGroup *group)
이 항목을 항목 그룹 group 에 추가합니다. group 이 nullptr
인 경우 이 항목은 현재 그룹에서 제거되고 이전 그룹의 상위 항목의 하위 항목으로 추가됩니다.
group() 및 QGraphicsScene::createItemGroup()도 참조하세요 .
void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
이 항목의 현재 입력 방법 힌트를 hints 로 설정합니다.
inputMethodHints() 및 inputMethodQuery()도 참조하세요 .
void QGraphicsItem::setOpacity(qreal opacity)
이 항목의 로컬 opacity 을 0.0(투명)에서 1.0(불투명) 사이로 설정합니다. 항목의 로컬 불투명도는 부모 및 상위 불투명도와 결합되어 effectiveOpacity()로 전달됩니다.
기본적으로 불투명도는 부모에서 자식으로 전파되므로 부모의 불투명도가 0.5이고 자식도 0.5인 경우 자식의 유효 불투명도는 0.25가 됩니다.
불투명도 속성은 paint() 함수에 전달된 페인터의 상태를 결정합니다. 항목이 캐시된 경우(예: ItemCoordinateCache 또는 DeviceCoordinateCache)에는 항목이 렌더링될 때 유효 속성이 항목의 캐시에 적용됩니다.
항목의 불투명도가 부모와 결합되는 방식에 영향을 주는 두 가지 항목 플래그가 있습니다: ItemIgnoresParentOpacity 및 ItemDoesntPropagateOpacityToChildren.
참고: 항목의 불투명도를 0으로 설정해도 isVisible()에 따라 항목이 보이지 않게 되지는 않지만 항목이 보이지 않는 것처럼 취급됩니다. 자세한 내용은 setVisible() 문서를 참조하세요.
opacity(), effectiveOpacity() 및 setVisible()도 참조하세요 .
void QGraphicsItem::setPanelModality(QGraphicsItem::PanelModality panelModality)
이 항목의 모달리티를 panelModality 로 설정합니다.
표시되는 항목의 모달리티를 변경하면 즉시 적용됩니다.
panelModality()도 참조하세요 .
void QGraphicsItem::setParentItem(QGraphicsItem *newParent)
이 항목의 상위 항목을 newParent 으로 설정합니다. 이 항목에 이미 상위 항목이 있는 경우 먼저 이전 상위 항목에서 제거됩니다. newParent 이 0이면 이 항목이 최상위 항목이 됩니다.
이렇게 하면 이 그래픽 항목이 부모의 장면에 암시적으로 추가됩니다. 이 항목을 직접 씬에 add 추가해서는 안 됩니다.
newParent 의 조상인 항목에서 이 함수를 호출할 때의 동작은 정의되지 않았습니다.
parentItem() 및 childItems()도 참조하십시오 .
void QGraphicsItem::setPos(const QPointF &pos)
항목의 위치를 부모 좌표인 pos 로 설정합니다. 부모가 없는 항목의 경우 pos 은 장면 좌표입니다.
항목의 위치는 상위 좌표에서 원점(로컬 좌표(0, 0))을 설명합니다.
pos(), scenePos() 및 그래픽 보기 좌표계를참조하십시오 .
void QGraphicsItem::setPos(qreal x, qreal y)
이 함수는 오버로드된 함수입니다.
이 편의 함수는 setPos(QPointF(x, y))를 호출하는 것과 동일합니다.
void QGraphicsItem::setRotation(qreal angle)
Z축을 중심으로 시계 방향 회전( angle, 도 단위)을 설정합니다. 기본값은 0입니다(즉, 항목이 회전되지 않음). 음수 값을 지정하면 항목이 시계 반대 방향으로 회전합니다. 일반적으로 회전 각도는 범위(-360, 360)에 있지만 이 범위를 벗어난 값을 지정할 수도 있습니다(예: 370도 회전은 10도 회전과 같음).
항목은 기본적으로 (0, 0)인 변형 원점을 중심으로 회전됩니다. setTransformOriginPoint ()를 호출하여 다른 변형 원점을 선택할 수 있습니다.
회전은 항목의 scale(), transform() 및 transformations()와 결합되어 항목의 좌표계를 상위 항목에 매핑합니다.
rotation(), setTransformOriginPoint() 및 Transformations 를참조하세요 .
void QGraphicsItem::setScale(qreal factor)
항목의 배율 factor 을 설정합니다. 기본 배율은 1.0입니다(즉, 항목에 배율이 적용되지 않음). 배율이 0.0이면 항목이 단일 점으로 축소됩니다. 음수 배율을 입력하면 항목이 뒤집히고 미러링됩니다(즉, 180도 회전됨).
항목은 기본적으로 (0, 0)인 변형 원점을 중심으로 배율이 조정됩니다. setTransformOriginPoint ()를 호출하여 다른 변형 원점을 선택할 수 있습니다.
배율은 항목의 rotation(), transform() 및 transformations()와 결합되어 항목의 좌표계를 상위 항목에 매핑합니다.
scale(), setTransformOriginPoint() 및 변환 예시도참조하세요 .
void QGraphicsItem::setSelected(bool selected)
selected 가 참이고 이 항목을 선택할 수 있으면 이 항목이 선택되고, 그렇지 않으면 선택 해제됩니다.
항목이 그룹에 있는 경우 이 함수를 통해 전체 그룹의 선택 상태가 전환됩니다. 그룹이 선택된 경우 그룹의 모든 항목도 선택되며, 그룹이 선택되지 않은 경우 그룹에 있는 항목이 선택되지 않습니다.
표시되고 활성화되어 있으며 선택 가능한 항목만 선택할 수 있습니다. selected 이 참이고 해당 항목이 보이지 않거나 비활성화 또는 선택할 수 없는 경우 이 함수는 아무 작업도 수행하지 않습니다.
기본적으로 항목은 선택할 수 없습니다. 선택 기능을 활성화하려면 ItemIsSelectable 플래그를 설정합니다.
이 기능은 편의를 위해 제공되는 기능으로, 항목의 선택 상태를 개별적으로 토글할 수 있습니다. 그러나 항목을 선택하는 더 일반적인 방법은 QGraphicsScene::setSelectionArea()를 호출하는 것인데, 이 함수는 장면의 지정된 영역 내에서 표시되고 활성화되어 있으며 선택 가능한 모든 항목에 대해 이 함수를 호출합니다.
isSelected() 및 QGraphicsScene::selectedItems()도 참조하세요 .
void QGraphicsItem::setToolTip(const QString &toolTip)
항목의 도구 설명을 toolTip 로 설정합니다. toolTip 이 비어 있으면 항목의 도구 설명이 지워집니다.
void QGraphicsItem::setTransform(const QTransform &matrix, bool combine = false)
항목의 현재 변환 행렬을 matrix 로 설정합니다.
combine 이 참이면 matrix 이 현재 행렬과 결합되고, 그렇지 않으면 matrix 이 현재 행렬을 대체합니다. combine 은 기본적으로 거짓입니다.
변환된 보기를 사용하여 항목과의 상호 작용을 단순화하기 위해 QGraphicsItem 은 항목과 장면의 좌표 간에 변환할 수 있는 mapTo... 및 mapFrom... 함수를 제공합니다. 예를 들어 mapToScene()를 호출하여 항목 좌표를 장면 좌표로 매핑하거나 mapFromScene()를 호출하여 장면 좌표에서 항목 좌표로 매핑할 수 있습니다.
변환 행렬은 항목의 rotation(), scale() 및 transformations()와 결합되어 항목의 좌표계를 부모에 매핑하는 결합된 변환으로 변환됩니다.
transform(), setRotation(), setScale(), setTransformOriginPoint(), 그래픽 보기 좌표계 및 Transformations 를참조하세요 .
void QGraphicsItem::setTransformOriginPoint(const QPointF &origin)
항목 좌표에서 변환을 위한 origin 지점을 설정합니다.
transformOriginPoint() 및 Transformations도 참조하세요 .
void QGraphicsItem::setTransformOriginPoint(qreal x, qreal y)
이 함수는 오버로드된 함수입니다.
항목 좌표에서 변환의 원점을 설정합니다. 이는 setTransformOriginPoint(QPointF(x, y))를 호출하는 것과 동일합니다.
setTransformOriginPoint() 및 Transformations 을참조하세요 .
void QGraphicsItem::setTransformations(const QList<QGraphicsTransform *> &transformations)
현재 이 항목에 적용되는 그래픽 transformations (QGraphicsTransform)의 목록을 설정합니다.
항목의 회전이나 크기 조정만 원하는 경우 setRotation() 또는 setScale()을 호출해야 합니다. 항목에 임의의 변형을 설정하려면 setTransform()를 호출하면 됩니다.
QGraphicsTransform 는 항목에 일련의 개별 변형 연산을 적용하고 제어하는 데 사용됩니다. 각 변환 연산을 독립적으로 또는 다르게 보간해야 하는 애니메이션에서 특히 유용합니다.
변환은 항목의 rotation(), scale() 및 transform()와 결합하여 항목의 좌표계를 상위 항목에 매핑합니다.
transformations(), scale(), setTransformOriginPoint() 및 Transformations도 참조하세요 .
void QGraphicsItem::setVisible(bool visible)
visible 이 참이면 항목이 표시됩니다. 그렇지 않으면 항목이 보이지 않게 됩니다. 보이지 않는 항목은 페인트되지 않으며 이벤트도 수신하지 않습니다. 특히 마우스 이벤트는 보이지 않는 항목을 바로 통과하여 뒤에 있는 모든 항목에 전달됩니다. 또한 보이지 않는 아이템은 선택할 수 없고 입력 포커스를 받을 수 없으며 QGraphicsScene 의 아이템 위치 기능으로 감지되지 않습니다.
마우스를 잡는 동안(즉, 마우스 이벤트를 수신하는 동안) 아이템이 보이지 않게 되면 자동으로 마우스 잡기를 잃게 되며, 아이템을 다시 보이게 해도 마우스 잡기가 회복되지 않고 다시 마우스를 눌러야 마우스 잡기를 되찾을 수 있습니다.
마찬가지로 보이지 않는 항목은 포커스를 가질 수 없으므로 항목이 보이지 않게 될 때 포커스가 있는 경우 포커스를 잃게 되며, 항목을 다시 보이게 한다고 해서 포커스가 회복되지 않습니다.
상위 항목을 숨기면 모든 하위 항목도 숨겨집니다. 부모 항목을 표시하면 명시적으로 숨기지 않는 한 모든 자식이 표시됩니다(즉, 자식에 setVisible(false)을 호출하면 부모가 숨겨졌다가 다시 표시되더라도 다시 표시되지 않습니다).
항목은 기본적으로 표시되므로 새 항목에 대해 setVisible()을 호출할 필요가 없습니다.
참고: 불투명도가 0으로 설정된 항목은 보이지 않는 항목처럼 취급되지만 마우스 이벤트가 통과하고 QGraphicsView::items()에서 반환하는 항목에 포함되지 않는 등 여전히 보이는 항목으로 간주됩니다. 그러나 항목은 포커스를 유지합니다.
isVisible(), show(), hide() 및 setOpacity()도 참조하세요 .
void QGraphicsItem::setX(qreal x)
항목 위치의 x 좌표를 설정합니다. setPos (x, y())를 호출하는 것과 동일합니다.
void QGraphicsItem::setY(qreal y)
항목 위치의 y 좌표를 설정합니다. setPos (x(), y)를 호출하는 것과 동일합니다.
void QGraphicsItem::setZValue(qreal z)
항목의 Z값을 z 으로 설정합니다. Z값은 형제(이웃) 항목의 겹침 순서를 결정합니다. Z 값이 높은 형제 항목은 항상 Z 값이 낮은 다른 형제 항목 위에 그려집니다.
Z 값을 복원하면 항목의 삽입 순서에 따라 쌓이는 순서가 결정됩니다.
Z 값은 항목의 크기에 어떤 영향도 미치지 않습니다.
기본 Z 값은 0입니다.
zValue(), Sorting, stackBefore() 및 ItemStacksBehindParent 을참조하세요 .
[virtual]
QPainterPath QGraphicsItem::shape() const
이 항목의 모양을 로컬 좌표의 QPainterPath 로 반환합니다. 이 도형은 충돌 감지, 히트 테스트, QGraphicsScene::items() 함수 등 다양한 용도로 사용됩니다.
기본 구현은 boundingRect()를 호출하여 단순한 직사각형 모양을 반환하지만, 서브클래스는 이 함수를 재구현하여 직사각형이 아닌 아이템에 대해 보다 정확한 모양을 반환할 수 있습니다. 예를 들어, 둥근 아이템은 더 나은 충돌 감지를 위해 타원 모양을 반환하도록 선택할 수 있습니다. 예를 들어
QPainterPath RoundItem::shape() const { QPainterPath path; path.addEllipse(boundingRect()); return path; }
도형의 윤곽선은 그릴 때 사용하는 펜의 너비와 스타일에 따라 달라질 수 있습니다. 이 윤곽선을 항목의 도형에 포함하려면 QPainterPathStroker 을 사용하여 획에서 도형을 만들 수 있습니다.
이 함수는 contains() 및 collidesWithPath()의 기본 구현에서 호출됩니다.
boundingRect(), contains(), prepareGeometryChange() 및 QPainterPathStroker도 참조하세요 .
void QGraphicsItem::show()
항목을 표시합니다(기본적으로 항목이 표시됨).
이 편의 함수는 setVisible(true)
을 호출하는 것과 같습니다.
hide() 및 setVisible()도 참조하세요 .
void QGraphicsItem::stackBefore(const QGraphicsItem *sibling)
이 항목을 형제 항목이어야 하는 sibling 앞에 스택합니다(즉, 두 항목이 동일한 상위 항목을 공유하거나 둘 다 최상위 항목이어야 함). sibling 은 이 항목과 동일한 Z 값을 가져야 하며, 그렇지 않으면 이 함수를 호출해도 효과가 없습니다.
기본적으로 모든 형제 항목은 삽입 순서에 따라 쌓입니다(즉, 처음 추가하는 항목이 다음 항목보다 먼저 그려집니다). 두 항목의 Z 값이 다른 경우 Z 값이 가장 높은 항목이 맨 위에 그려집니다. Z 값이 같으면 삽입 순서에 따라 쌓이는 순서가 결정됩니다.
setZValue(), ItemStacksBehindParent, Sorting 를참조하세요 .
QGraphicsObject *QGraphicsItem::toGraphicsObject()
클래스가 실제로 그래픽 객체인 경우 QGraphicsObject 로 캐스팅된 그래픽 항목을 반환하고, 그렇지 않으면 0을 반환합니다.
const QGraphicsObject *QGraphicsItem::toGraphicsObject() const
클래스가 실제로 그래픽 객체인 경우 QGraphicsObject 로 캐스팅된 그래픽 항목을 반환하고, 그렇지 않으면 0을 반환합니다.
QString QGraphicsItem::toolTip() const
항목의 도구 설명을 반환하거나, 도구 설명이 설정되지 않은 경우 빈 QString 을 반환합니다.
setToolTip() 및 QToolTip도 참조하세요 .
QGraphicsItem *QGraphicsItem::topLevelItem() const
이 항목의 최상위 항목을 반환합니다. 최상위 항목은 부모가 nullptr
인 항목의 최상위 조상 항목입니다. 항목에 부모가 없는 경우 자체 포인터가 반환됩니다(즉, 최상위 항목은 자체 최상위 항목입니다).
parentItem()도 참조하세요 .
QGraphicsWidget *QGraphicsItem::topLevelWidget() const
항목의 최상위 위젯(즉, 부모가 nullptr
이거나 위젯이 아닌 항목의 조상)에 대한 포인터를 반환하거나, 이 항목에 최상위 위젯이 없는 경우 nullptr
을 반환합니다. 항목이 자체 최상위 위젯인 경우 이 함수는 항목 자체에 대한 포인터를 반환합니다.
QTransform QGraphicsItem::transform() const
이 항목의 변환 행렬을 반환합니다.
변환 행렬은 항목의 rotation(), scale() 및 transformations()와 결합되어 항목에 대한 결합된 변환으로 변환됩니다.
기본 변환 행렬은 아이덴티티 행렬입니다.
setTransform() 및 sceneTransform()도 참조하세요 .
QPointF QGraphicsItem::transformOriginPoint() const
항목 좌표로 변환의 원점을 반환합니다.
기본값은 QPointF(0,0)입니다.
setTransformOriginPoint() 및 Transformations 을참조하세요 .
QList<QGraphicsTransform *> QGraphicsItem::transformations() const
현재 이 항목에 적용되는 그래픽 트랜스폼 목록을 반환합니다.
QGraphicsTransform 는 항목에 일련의 개별 트랜스폼 연산을 적용하고 제어하는 데 사용됩니다. 각 변환 연산을 독립적으로 또는 다르게 보간해야 하는 애니메이션에서 특히 유용합니다.
변환은 항목의 rotation(), scale() 및 transform()와 결합하여 항목의 좌표계를 상위 항목에 매핑합니다.
setTransformations(), scale(), rotation(), transformOriginPoint() 및 Transformations도 참조하세요 .
[virtual]
int QGraphicsItem::type() const
항목의 유형을 정수로 반환합니다. 모든 표준 그래픽아이템 클래스는 고유한 값과 연관되어 있습니다( QGraphicsItem::Type 참조). 이 유형 정보는 qgraphicsitem_cast()에서 유형을 구분하는 데 사용됩니다.
기본 구현( QGraphicsItem)에서는 UserType 을 반환합니다.
사용자 정의 항목에 qgraphicsitem_cast()를 사용하려면 이 함수를 다시 구현하고 사용자 정의 항목의 유형과 동일한 Type 열거형 값을 선언하세요. 사용자 지정 항목은 UserType (65536)보다 크거나 같은 값을 반환해야 합니다.
예를 들어
class CustomItem : public QGraphicsItem { public: enum { Type = UserType + 1 }; int type() const override { // Enable the use of qgraphicsitem_cast with this item. return Type; } ... };
UserType 를참조하세요 .
void QGraphicsItem::ungrabKeyboard()
키보드 그랩을 해제합니다.
grabKeyboard() 및 ungrabMouse()도 참조하세요 .
void QGraphicsItem::ungrabMouse()
마우스 그랩을 해제합니다.
grabMouse() 및 ungrabKeyboard()도 참조하세요 .
void QGraphicsItem::unsetCursor()
이 항목에서 커서를 지웁니다.
hasCursor() 및 setCursor()도 참조하세요 .
void QGraphicsItem::update(const QRectF &rect = QRectF())
이 항목에서 rect 영역의 다시 그리기를 예약합니다. 항목의 모양이나 크기가 변경되는 등 다시 그려야 할 때마다 이 함수를 호출할 수 있습니다.
이 함수는 즉시 그리는 것이 아니라 제어가 이벤트 루프에 도달한 후 QGraphicsView 에서 처리하는 페인트 요청을 예약합니다. 항목은 연결된 보기에 표시되는 경우에만 다시 그려집니다.
항목이 다시 그려지는 부작용으로 rect 영역과 겹치는 다른 항목도 다시 그려질 수 있습니다.
항목이 보이지 않는 경우(예: isVisible()가 false
)를 반환하는 경우 이 함수는 아무 작업도 수행하지 않습니다.
paint() 및 boundingRect()도 참조하세요 .
void QGraphicsItem::update(qreal x, qreal y, qreal width, qreal height)
이 함수는 오버로드된 함수입니다.
이 편의 함수는 update(QRectF(x, y, width, height))를 호출하는 것과 동일합니다.
[protected]
void QGraphicsItem::updateMicroFocus()
항목의 마이크로 포커스를 업데이트합니다.
QInputMethod도 참조하세요 .
[virtual protected]
void QGraphicsItem::wheelEvent(QGraphicsSceneWheelEvent *event)
이벤트 event 에 대한 이 이벤트 핸들러를 다시 구현하여 이 항목에 대한 휠 이벤트를 수신할 수 있습니다. 이 함수를 다시 구현하면 기본적으로 event 이 수락됩니다.
이벤트를 무시하면(즉, QEvent::ignore()를 호출하여) 이 항목 아래의 모든 항목으로 이벤트가 전파됩니다. 이벤트를 수락하는 항목이 없으면 씬에서 이벤트를 무시하고 뷰(예: 뷰의 세로 스크롤 막대)로 전파됩니다.
기본 구현은 이벤트를 무시합니다.
sceneEvent()도 참조하십시오 .
QGraphicsWidget *QGraphicsItem::window() const
항목의 창을 반환하거나, 항목에 창이 없는 경우 nullptr
을 반환합니다. 항목이 창인 경우 그 자체를 반환합니다. 그렇지 않으면 창인 가장 가까운 조상을 반환합니다.
QGraphicsWidget::isWindow()도 참조하세요 .
qreal QGraphicsItem::x() const
이 편의 함수는 pos().x()를 호출하는 것과 동일합니다.
qreal QGraphicsItem::y() const
이 편의 함수는 pos().y()를 호출하는 것과 동일합니다.
qreal QGraphicsItem::zValue() const
아이템의 Z값을 반환합니다. Z 값은 형제(인접) 항목의 스택 순서에 영향을 줍니다.
기본 Z값은 0입니다.
setZValue(), Sorting, stackBefore() 및 ItemStacksBehindParent 을참조하세요 .
관련 비회원
template <typename T> T qgraphicsitem_cast(QGraphicsItem *item)
item 유형이 T 유형인 경우 지정된 item 형변환을 반환하고, 그렇지 않으면 nullptr
을 반환합니다.
참고: 이 함수가 사용자 정의 항목에서 올바르게 작동하도록 하려면 각 사용자 정의 QGraphicsItem 하위 클래스에 대해 type() 함수를 다시 구현하세요.
QGraphicsItem::type() 및 QGraphicsItem::UserType도 참조하세요 .
© 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.