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 { Type, UserType } |
공개 함수
| QGraphicsItem(QGraphicsItem*parent = 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 |
| 가상 bool | collidesWithItem(const QGraphicsItem*other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| 가상 bool | collidesWithPath(const QPainterPath&path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QList<QGraphicsItem *> | collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const |
| QGraphicsItem * | commonAncestorItem(const QGraphicsItem*other) const |
| virtual bool | contains(const QPointF&point) const |
| QCursor | cursor() const |
| QVariant | data(int key) 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 *() const | group() const |
| bool | hasCursor() const |
| bool | hasFocus() const |
| void | hide() |
| Qt::InputMethodHints | inputMethodHints() const |
| void | installSceneEventFilter(QGraphicsItem*filterItem) |
| 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 |
| 가상 bool | isObscuredBy(const QGraphicsItem*item) const |
| bool | isPanel() const |
| bool | isSelected() const |
| bool | isUnderMouse() const |
| bool | isVisible() const |
| bool | isVisibleTo(const QGraphicsItem*parent) const |
| bool | isWidget() const |
| bool | isWindow() const |
| QTransform | itemTransform(const QGraphicsItem*other, 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*item, 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(qreal x, qreal y, qreal w, qreal 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*item, 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(qreal x, qreal y, qreal w, qreal 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(qreal x, qreal y, qreal w, qreal h) const |
| QPointF | mapToScene(qreal x, qreal y) const |
| void | moveBy(qreal dx, qreal dy) |
| qreal | opacity() const |
| 가상 QPainterPath | opaqueArea() const |
| virtual void | paint(QPainter*painter, const QStyleOptionGraphicsItem*option, QWidget*widget = nullptr) = 0 |
| QGraphicsItem * | panel() const |
| QGraphicsItem::PanelModality | panelModality() const |
| QGraphicsItem *() const | parentItem() const |
| QGraphicsObject * | parentObject() const |
| QGraphicsWidget * | parentWidget() const |
| QPointF | pos() const |
| void | removeSceneEventFilter(QGraphicsItem*filterItem) |
| 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 buttons) |
| void | setActive(bool active) |
| void | setBoundingRegionGranularity(qreal granularity) |
| void | setCacheMode(QGraphicsItem::CacheMode mode, const QSize&logicalCacheSize = QSize()) |
| void | setCursor(const QCursor&cursor) |
| void | setData(int key, const QVariant&value) |
| void | setEnabled(bool enabled) |
| void | setFiltersChildEvents(bool enabled) |
| void | setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true) |
| void | setFlags(QGraphicsItem::GraphicsItemFlags flags) |
| void | setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason) |
| void | setFocusProxy(QGraphicsItem*item) |
| void | setGraphicsEffect(QGraphicsEffect*effect) |
| void | setGroup(QGraphicsItemGroup*group) |
| void | setInputMethodHints(Qt::InputMethodHints hints) |
| void | setOpacity(qreal opacity) |
| void | setPanelModality(QGraphicsItem::PanelModality panelModality) |
| void | setParentItem(QGraphicsItem*newParent) |
| void | setPos(const QPointF&pos) |
| void | setPos(qreal x, qreal y) |
| void | setRotation(qreal angle) |
| void | setScale(qreal 계수) |
| void | setSelected(bool selected) |
| void | setToolTip(const QString&toolTip) |
| void | setTransform(const QTransform&matrix, bool combine = 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*sibling) |
| 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() 호출을 기반으로 합니다.
아이템은 다른 아이템을 포함할 수 있으며, 다른 아이템에 포함될 수도 있습니다. 모든 아이템은 부모 아이템과 자식 목록을 가질 수 있습니다. 부모가 없는 아이템이 아닌 한, 해당 아이템의 위치는 부모 좌표계(즉, 부모의 국소 좌표계)에 있습니다. 부모 아이템은 자신의 위치와 변환을 모든 자식에게 전달합니다.

변환
QGraphicsItem은 기본 위치인 pos() 외에도 투영 변환을 지원합니다. 항목의 변환을 변경하는 방법에는 여러 가지가 있습니다. 간단한 변환의 경우, 편의 함수인 ` setRotation()` 또는 ` setScale()` 중 하나를 호출하거나, 임의의 변환 행렬을 ` setTransform()`에 전달할 수 있습니다. 고급 변환 제어를 위해서는 ` setTransformations()`를 호출하여 여러 변환을 조합하여 설정할 수도 있습니다.
항목 변환은 부모에서 자식으로 누적되므로, 부모 항목과 자식 항목이 모두 90도 회전된 경우 자식 항목의 총 변환 각도는 180도가 됩니다. 마찬가지로, 항목의 부모가 원래 크기의 2배로 확대된 경우, 자식 항목들도 두 배로 커집니다. 아이템의 변환은 해당 아이템 자체의 로컬 기하 구조에는 영향을 미치지 않습니다. 모든 기하 함수(예: contains(), update() 및 모든 매핑 함수)는 여전히 로컬 좌표계에서 작동합니다. 편의를 위해 QGraphicsItem은 항목의 전체 변환 행렬(항목의 위치와 모든 상위 항목의 위치 및 변환을 포함)을 반환하는 ` sceneTransform()` 함수와, 장면 좌표계에서의 위치를 반환하는 ` scenePos()` 함수를 제공합니다. 항목의 행렬을 초기화하려면 ` resetTransform()`을 호출하십시오.
일부 변환 연산은 적용 순서에 따라 결과가 달라질 수 있습니다. 예를 들어, 변환을 먼저 확대/축소한 다음 회전하면, 변환을 먼저 회전했을 때와는 다른 결과가 나올 수 있습니다. 그러나 QGraphicsItem에 변환 속성을 설정하는 순서는 결과적인 변환에 영향을 미치지 않습니다. QGraphicsItem은 항상 고정되고 정의된 순서대로 속성을 적용합니다:
- 항목의 기본 변환이 적용됩니다 (transform())
- 아이템의 변환 목록이 순서대로 적용됩니다 (transformations())
- 항목이 변환 원점(rotation()), transformOriginPoint()을 기준으로 회전됩니다
- 항목은 변환 원점을 기준으로 크기가 조정됩니다 (scale(), transformOriginPoint())
그리기
paint() 함수는 QGraphicsView 에 의해 호출되어 항목의 내용을 그립니다. 항목 자체에는 배경이나 기본 채우기 색상이 없으며, 이 함수에서 명시적으로 그려지지 않은 모든 영역을 통해 항목 뒤에 있는 내용이 비쳐 보입니다. update()를 호출하여 다시 그리기를 예약할 수 있으며, 필요에 따라 다시 그리기가 필요한 사각형을 전달할 수도 있습니다. 항목이 뷰에 표시되는지 여부에 따라 항목이 다시 그려지거나 그려지지 않을 수 있습니다. QGraphicsItem에는 QWidget::repaint()에 해당하는 기능이 없습니다.
항목은 뷰에 의해 렌더링되며, 부모 항목부터 시작하여 자식 항목을 스태킹 순서(오름차순)대로 그립니다. setZValue()를 호출하여 항목의 스태킹 순서를 설정할 수 있으며, zValue()를 호출하여 이를 확인할 수 있습니다. 여기서 z값이 낮은 항목이 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 및 Graphics View Framework도 참조하십시오 .
멤버 유형 문서
enum QGraphicsItem::CacheMode
이 열거형은 ` QGraphicsItem`의 캐시 모드를 설명합니다. 캐싱은 오프스크린 픽셀 버퍼를 할당하고 여기에 렌더링함으로써 렌더링 속도를 높이는 데 사용되며, 해당 항목을 다시 그려야 할 때 이 버퍼를 재사용할 수 있습니다. 일부 페인트 장치의 경우 캐시가 그래픽 메모리에 직접 저장되므로 렌더링 속도가 매우 빨라집니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsItem::NoCache | 0 | 기본값입니다. 모든 항목 캐싱이 비활성화됩니다. 항목이 다시 그려져야 할 때마다 ` QGraphicsItem::paint()`가 호출됩니다. |
QGraphicsItem::ItemCoordinateCache | 1 | 항목의 논리적(로컬) 좌표계에 대해 캐싱이 활성화됩니다. ` QGraphicsItem `는 ` QGraphicsItem::setCacheMode()`에 전달할 수 있는, 크기와 해상도를 구성할 수 있는 오프스크린 픽셀 버퍼를 생성합니다. 캐시의 해상도와 항목 변환에 따라 렌더링 품질이 일반적으로 저하됩니다. 항목이 처음 다시 그려질 때 캐시에 렌더링되며, 이후 모든 노출(expose) 시 해당 캐시가 재사용됩니다. 항목이 변환될 때도 캐시가 재사용됩니다. 캐시의 해상도를 조정하려면 setCacheMode()를 다시 호출하면 됩니다. |
QGraphicsItem::DeviceCoordinateCache | 2 | 캐싱은 페인트 장치 수준에서 장치 좌표계로 활성화됩니다. 이 모드는 이동할 수는 있지만 회전, 크기 조정 또는 전단 변형이 적용되지 않는 항목을 위한 것입니다. 항목에 직접적 또는 간접적으로 변형이 적용되면 캐시가 자동으로 재생성됩니다. ItemCoordinateCacheMode와 달리 DeviceCoordinateCache는 항상 최대 품질로 렌더링합니다. |
QGraphicsItem::setCacheMode()도 참조하십시오 .
enum QGraphicsItem::GraphicsItemChange
이 열거형은 QGraphicsItem::itemChange() 함수가 알리는 상태 변화를 설명합니다. 상태가 변경되면 알림이 전송되며, 경우에 따라 조정이 가능합니다(자세한 내용은 각 변경 사항에 대한 문서를 참조하십시오).
참고: itemChange() 내부에서 QGraphicsItem 자체에 대한 함수를 호출할 때는 주의해야 합니다. 특정 함수 호출은 원치 않는 재귀를 유발할 수 있기 때문입니다. 예를 들어, ItemPositionChange 알림이 발생했을 때 itemChange() 내에서 setPos()를 호출할 수 없습니다. setPos() 함수가 다시 itemChange(ItemPositionChange)를 호출하게 되기 때문입니다. 대신, itemChange()에서 조정된 새로운 위치를 반환할 수 있습니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsItem::ItemEnabledChange | 3 | 항목의 활성화 상태가 변경됩니다. 항목이 현재 활성화된 상태라면 비활성화되고, 그 반대의 경우도 마찬가지입니다. value 인수는 새로운 활성화 상태(즉, true 또는 false)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setEnabled()를 호출하지 마십시오. 대신 itemChange()에서 새로운 상태를 반환할 수 있습니다. |
QGraphicsItem::ItemEnabledHasChanged | 13 | 항목의 활성화 상태가 변경되었습니다. value 인수는 새로운 활성화 상태(즉, true 또는 false)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setEnabled()을 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemPositionChange | 0 | 항목의 위치가 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고, 항목의 로컬 위치가 부모에 상대적으로 변경될 때(즉, setPos() 또는 moveBy() 호출의 결과로) 전송됩니다. value 인수는 새로운 위치( QPointF)입니다. pos()를 호출하여 원래 위치를 확인할 수 있습니다. 이 알림이 전달되는 동안 itemChange() 내에서 setPos() 또는 moveBy()를 호출하지 마십시오. 대신 itemChange()에서 조정된 새로운 위치를 반환할 수 있습니다. 이 알림 이후, 위치가 변경된 경우 QGraphicsItem 는 즉시 ItemPositionHasChanged 알림을 보냅니다. |
QGraphicsItem::ItemPositionHasChanged | 9 | 아이템의 위치가 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고, 부모에 상대적인 아이템의 로컬 위치가 변경된 후에 전송됩니다. value 인수는 새로운 위치입니다( pos()와 동일하며), QGraphicsItem 는 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림입니다). |
QGraphicsItem::ItemTransformChange | 8 | 항목의 변환 행렬이 변경됩니다. 이 알림은 ` ItemSendsGeometryChanges ` 플래그가 활성화되어 있고, 항목의 로컬 변환 행렬이 변경될 때(즉, ` setTransform()` 호출의 결과로) 전송됩니다. `value` 인수는 새로운 행렬입니다(즉, ` QTransform`); 이전 행렬을 얻으려면 ` transform()`를 호출하십시오. 이 알림이 전달되는 동안에는 setTransform()을 호출하거나 itemChange()에서 변환 속성을 설정해서는 안 됩니다. 대신 itemChange()에서 새로운 행렬을 반환할 수 있습니다. 변환 속성을 변경하면 이 알림은 전송되지 않습니다. |
QGraphicsItem::ItemTransformHasChanged | 10 | setTransform 가 호출되었거나 변환 속성 중 하나가 변경되어 항목의 변환 행렬이 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화된 상태에서 항목의 로컬 변환 행렬이 변경된 후에 전송됩니다. value 인수는 새로운 행렬입니다( transform()과 동일하며), QGraphicsItem 는 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림입니다). |
QGraphicsItem::ItemRotationChange | 28 | 아이템의 회전 속성이 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고, 아이템의 회전 속성이 변경될 때(즉, setRotation() 호출의 결과로) 전송됩니다. value 인수는 새로운 회전 값(즉, double)이며, 이전 회전 값을 얻으려면 rotation()를 호출하십시오. 이 알림이 전달되는 동안 itemChange() 내에서 setRotation()을 호출하지 마십시오. 대신 itemChange()에서 새로운 회전 값을 반환할 수 있습니다. |
QGraphicsItem::ItemRotationHasChanged | 29 | 아이템의 회전 속성이 변경되었습니다. 이 알림은 ‘ ItemSendsGeometryChanges ’ 플래그가 활성화되어 있고, 아이템의 회전 속성이 변경된 후에 전송됩니다. value 인수는 새로운 회전 값(즉, double)이며, QGraphicsItem 은 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림입니다). 이 알림이 전달되는 동안 ` itemChange()` 내에서 ` setRotation()`를 호출하지 마십시오. |
QGraphicsItem::ItemScaleChange | 30 | 항목의 scale 속성이 변경됩니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화된 상태에서 항목의 scale 속성이 변경될 때(즉, setScale() 호출의 결과로) 전송됩니다. value 인수는 새로운 scale 값(즉, double)이며, 이전 scale 값을 얻으려면 scale()를 호출하십시오. 이 알림이 전달되는 동안 ` itemChange()` 내에서 ` setScale()`을 호출하지 마십시오. 대신 ` itemChange()`에서 새로운 스케일을 반환할 수 있습니다. |
QGraphicsItem::ItemScaleHasChanged | 31 | 항목의 scale 속성이 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화되어 있고, 항목의 scale 속성이 변경된 후에 전송됩니다. value 인수는 새로운 scale 값(즉, double)이며, QGraphicsItem 는 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림입니다). 이 알림이 전달되는 동안 itemChange() 내에서 setScale()을 호출하지 마십시오. |
QGraphicsItem::ItemTransformOriginPointChange | 32 | 항목의 변환 원점 속성이 변경됩니다. 이 알림은 ` ItemSendsGeometryChanges ` 플래그가 활성화된 상태에서, 항목의 변환 원점 속성이 변경될 때(즉, ` setTransformOriginPoint()` 호출의 결과로) 전송됩니다. value 인수는 새로운 원점(즉, ` QPointF`)입니다. 이전 원점을 얻으려면 ` transformOriginPoint()`를 호출하십시오. 이 알림이 전달될 때 ` itemChange()` 내에서 ` setTransformOriginPoint()`를 호출하지 마십시오. 대신 ` itemChange()`에서 새로운 변환 원점을 반환할 수 있습니다. |
QGraphicsItem::ItemTransformOriginPointHasChanged | 33 | 아이템의 변환 원점 속성이 변경되었습니다. 이 알림은 ItemSendsGeometryChanges 플래그가 활성화된 상태에서, 아이템의 변환 원점 속성이 변경된 후에 전송됩니다. value 인수는 새로운 원점(즉, QPointF)이며, QGraphicsItem 는 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림입니다). 이 알림이 전달되는 동안 ` itemChange()` 내에서 ` setTransformOriginPoint()`를 호출하지 마십시오. |
QGraphicsItem::ItemSelectedChange | 4 | setSelected항목의 선택 상태가 변경됩니다. 항목이 현재 선택된 상태라면 선택 해제되고, 그 반대의 경우도 마찬가지입니다. value 인수는 새로운 선택 상태(즉, true 또는 false)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 ()를 호출하지 마십시오. 대신 itemChange()에서 새로운 선택 상태를 반환할 수 있습니다. |
QGraphicsItem::ItemSelectedHasChanged | 14 | 항목의 선택 상태가 변경되었습니다. value 인수는 새로운 선택 상태(즉, true 또는 false)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setSelected()를 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemVisibleChange | 2 | 항목의 표시 상태가 변경됩니다. 항목이 현재 표시되어 있다면 숨겨지고, 그 반대의 경우도 마찬가지입니다. value 인수는 새로운 표시 상태(즉, true 또는 false)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setVisible()를 호출하지 마십시오. 대신 itemChange()에서 새로운 표시 상태를 반환할 수 있습니다. |
QGraphicsItem::ItemVisibleHasChanged | 12 | 항목의 표시 상태가 변경되었습니다. value 인자는 새로운 표시 상태(즉, true 또는 false)입니다. 이 알림이 전달될 때 itemChange() 내에서 setVisible()를 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemParentChange | 5 | 항목의 부모가 변경되었습니다. value 인수는 새로운 부모 항목(즉, QGraphicsItem 포인터)입니다. 이 알림이 전달될 때 itemChange() 내에서 setParentItem()를 호출하지 마십시오. 대신, itemChange()에서 새로운 부모를 반환할 수 있습니다. |
QGraphicsItem::ItemParentHasChanged | 15 | 항목의 부모가 변경되었습니다. value 인자는 새로운 부모입니다(즉, QGraphicsItem 에 대한 포인터). 이 알림이 전달될 때 itemChange() 내에서 setParentItem()를 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemChildAddedChange | 6 | 이 항목에 자식 항목이 추가되었습니다. value 인수는 새로운 자식 항목(즉, QGraphicsItem 포인터)입니다. 이 알림이 전달되는 동안 이 항목을 다른 항목의 setParentItem() 함수에 전달해서는 안 됩니다. 반환 값은 사용되지 않으며, 이 알림에서 어떤 것도 조정할 수 없습니다. 이 알림이 전송될 때 새로운 자식 항목이 완전히 생성되지 않았을 수 있으므로, 자식 항목에 대해 순수 가상 함수를 호출하면 프로그램이 중단될 수 있습니다. |
QGraphicsItem::ItemChildRemovedChange | 7 | 이 항목에서 자식 항목이 제거됩니다. value 인수는 제거될 자식 항목입니다(즉, QGraphicsItem 포인터). 반환 값은 사용되지 않으며, 이 알림에서 어떤 설정도 조정할 수 없습니다. |
QGraphicsItem::ItemSceneChange | 11 | 항목이 새로운 장면으로 이동됩니다. 이 알림은 항목이 초기 장면에 추가되거나 제거될 때도 전송됩니다. 항목의 scene()는 이전 장면이며, 항목이 아직 어떤 장면에도 추가되지 않은 경우에는 nullptr 입니다. value 인수는 새로운 장면(즉, QGraphicsScene 포인터)이며, 아이템이 장면에서 제거된 경우에는 nullptr 입니다. 이 알림이 전달되는 동안 해당 항목을 QGraphicsScene::addItem()에 전달하여 이 변경 사항을 재정의하지 마십시오. 대신, itemChange()에서 새로운 장면을 반환할 수 있습니다. 이 기능은 신중하게 사용하십시오. 장면 변경을 거부하면 원치 않는 재귀가 빠르게 발생할 수 있습니다. |
QGraphicsItem::ItemSceneHasChanged | 16 | 아이템의 장면이 변경되었습니다. 아이템의 ` scene()` 메서드는 새로운 장면을 반환합니다. 이 알림은 아이템이 초기 장면에 추가되거나 제거될 때도 전송됩니다. `value` 인수는 새로운 장면(즉, ` QGraphicsScene`에 대한 포인터)입니다. 이 알림이 전달되는 동안 ` itemChange()` 내에서 `setScene()`을 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemCursorChange | 17 | 아이템의 커서가 변경됩니다. value 인수는 새로운 커서(즉, QCursor)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setCursor()을 호출하지 마십시오. 대신, itemChange()에서 새로운 커서를 반환할 수 있습니다. |
QGraphicsItem::ItemCursorHasChanged | 18 | 항목의 커서가 변경되었습니다. value 인수는 새로운 커서(즉, QCursor)입니다. 이 알림이 전달될 때 setCursor()를 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemToolTipChange | 19 | 항목의 툴팁이 변경되었습니다. value 인수는 새로운 툴팁(즉, QToolTip)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setToolTip()를 호출하지 마십시오. 대신 itemChange()에서 새로운 툴팁을 반환할 수 있습니다. |
QGraphicsItem::ItemToolTipHasChanged | 20 | 항목의 툴팁이 변경되었습니다. value 인수는 새로운 툴팁(즉, QToolTip)입니다. 이 알림이 전달되는 동안 setToolTip()을 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemFlagsChange | 21 | 항목의 플래그가 변경되었습니다. value 인자는 새로운 플래그(즉, setFlags)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 ()를 호출하지 마십시오. 대신, itemChange()에서 새로운 플래그를 반환할 수 있습니다. |
QGraphicsItem::ItemFlagsHaveChanged | 22 | 항목의 플래그가 변경되었습니다. value 인수는 새로운 플래그(즉, quint32)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setFlags()를 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemZValueChange | 23 | 아이템의 Z 값이 변경되었습니다. value 인수는 새로운 Z 값(즉, double)입니다. 이 알림이 전달될 때 itemChange() 내에서 setZValue()를 호출하지 마십시오. 대신 itemChange()에서 새로운 Z 값을 반환할 수 있습니다. |
QGraphicsItem::ItemZValueHasChanged | 24 | 항목의 Z값이 변경되었습니다. value 인수는 새로운 Z값(즉, double)입니다. 이 알림이 전달될 때 setZValue()을 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemOpacityChange | 25 | 항목의 불투명도가 변경되었습니다. value 인수는 새로운 불투명도(즉, double)입니다. 이 알림이 전달되는 동안 itemChange() 내에서 setOpacity()를 호출하지 마십시오. 대신 itemChange()에서 새로운 불투명도를 반환할 수 있습니다. |
QGraphicsItem::ItemOpacityHasChanged | 26 | 아이템의 불투명도가 변경되었습니다. value 인수는 새로운 불투명도 값(즉, double)입니다. 이 알림이 전달되는 동안 setOpacity()을 호출하지 마십시오. 반환 값은 무시됩니다. |
QGraphicsItem::ItemScenePositionHasChanged | 27 | 아이템의 씬 위치가 변경되었습니다. 이 알림은 ItemSendsScenePositionChanges 플래그가 활성화된 상태에서, 아이템의 씬 위치가 변경된 후(즉, 아이템 자체의 위치나 변환, 또는 상위 노드의 위치나 변환이 변경된 경우) 전송됩니다. value 인수는 새로운 씬 위치이며( scenePos()와 동일), QGraphicsItem 는 이 알림의 반환 값을 무시합니다(즉, 읽기 전용 알림입니다). |
enum QGraphicsItem::GraphicsItemFlag
flags 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와 유사하지만, 자식 항목을 잘라내어 포함 관계를 추가로 강제 적용합니다. |
QGraphicsItem::ItemIgnoresTransformations | 0x20 | 이 항목은 상속된 변환을 무시합니다(즉, 위치는 여전히 부모에 고정되지만, 부모나 뷰의 회전, 확대/축소 또는 전단 변환은 무시됩니다). 이 플래그는 텍스트 레이블 항목을 수평으로 유지하고 크기를 조정하지 않도록 하는 데 유용하며, 이를 통해 뷰가 변환되더라도 텍스트를 계속 읽을 수 있습니다. 이 플래그가 설정되면, 항목의 뷰 기하 구조와 씬 기하 구조가 별도로 유지됩니다. 좌표를 매핑하고 뷰 내에서 충돌을 감지하려면 ` deviceTransform()`를 호출해야 합니다. 기본적으로 이 플래그는 비활성화되어 있습니다. 이 플래그는 Qt 4.3에서 도입되었습니다. 참고: 이 플래그가설정되어 있어도 항목 자체의 크기를 조정할 수 있으며, 해당 크기 조정 변환은 항목의 자식 요소에도 영향을 미칩니다. |
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()`를 호출해도 아무런 효과가 없습니다). Graphics View가 불필요한 렌더링 준비 작업을 수행하지 않도록 하려면, 렌더링이 필요 없는 항목에 이 플래그를 설정해야 합니다. 이 플래그는 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도 참조하십시오 .
[anonymous] enum
Qt의 표준 그래픽 항목 클래스에서 가상 함수 ` type()`가 반환하는 값입니다. Qt의 모든 표준 그래픽 항목 클래스는 `Type`에 대한 고유한 값과 연관되어 있습니다. 예를 들어, ` QGraphicsPathItem::type()`가 반환하는 값은 2입니다.
| 상수 | 값 | 설명 |
|---|---|---|
QGraphicsItem::Type | 1 | |
QGraphicsItem::UserType | 65536 | ` QGraphicsItem`의 사용자 정의 하위 클래스에 대해 가상 함수 ` 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 및 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()를 호출할 때는, 교차 처리가 이루어지기 전에 반환된 좌표를 해당 아이템의 좌표계로 매핑해야 한다는 점을 유의하십시오.
contains() 및 shape()도 참조하십시오 .
[virtual] bool QGraphicsItem::collidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
이 항목이 path 과 충돌하는 경우 true 를 반환합니다.
충돌 여부는 mode 에 따라 결정됩니다. mode 의 기본값은 Qt::IntersectsItemShape 이며, path 는 이 항목의 도형과 교차하거나, 이 항목의 도형을 포함하거나, 이 항목의 도형에 포함될 경우 이 항목과 충돌합니다.
이 함수는 path 가 항목의 도형이나 경계 사각형( mode 에 따라 다름) 내에 포함되는지 여부를 확인하는 것이 아니라, 항목의 도형이나 경계 사각형이 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-beam 커서를 사용하려면 다음과 같이 합니다:
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, transform);
if (item->data(ObjectName).toString().isEmpty()) {
if (qgraphicsitem_cast<CustomItem *>(item))
item->setData(ObjectName, "Custom");
}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 에 포함된 관련 MIME 데이터에 따라 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 `가 null 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()이 true인 경우에도 해당 아이템이 상위 노드에서 보이지 않을 수 있습니다. 반대로 isVisible()이 false인 경우에도 해당 아이템이 상위 노드에서 보일 수 있습니다. 상위 노드 중 하나라도 숨겨져 있으면 해당 아이템 자체도 암시적으로 숨겨지며, 이 경우 이 함수는 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
이 편의 함수는 mapToItem(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
이 편의 함수는 mapToParent(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()d로 처리됩니다.
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()`과 같은 함수를 통해 조회될 때 해당 항목의 표시 여부에도 영향을 미칩니다.
opacity 속성은 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()이 호출되지 않은 한, 항목은 항상 정확히 동일한 방식으로 다시 그려져야합니다 . 그렇지 않으면 시각적 아티팩트가 발생할 수 있습니다. 즉, update()이 그 사이에 호출되지 않은 한, 연이어 호출된 두 번의 paint()는 항상 동일한 결과를 산출해야 합니다.
참고: 항목에 대해 캐싱을활성화한다고 해서, update()을 명시적으로 호출하지 않더라도 Graphics View 프레임워크가 paint()를 단 한 번만 호출한다는 보장은 없습니다. 자세한 내용은 setCacheMode() 문서를 참조하십시오.
setCacheMode(), QPen::width(), Item Coordinates 및 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 의 인덱스가 최신 상태로 유지되도록 하십시오.
prepareGeometryChange()는 필요한 경우 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 는 필터링된 이벤트입니다.
서브클래스에서 이 함수를 재구현하면, 해당 아이템을 다른 아이템에 대한 이벤트 필터로 사용할 수 있게 되어, 해당 아이템으로 전송된 모든 이벤트가 응답하기 전에 이를 가로챌 수 있습니다.
재구현 시, 주어진 이벤트의 추가 처리를 방지하고 감시 대상 항목으로 이벤트가 전달되지 않도록 하려면 true를 반환해야 하며, 이벤트 시스템에 의해 이벤트가 더 이상 전파되어야 함을 나타내려면 false를 반환해야 합니다.
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())
dx( dy)가 지정한 rect 의 내용을 스크롤합니다. rect 가 null rect(기본값)인 경우, 항목의 경계 사각형이 스크롤됩니다.
스크롤링은 항목의 내용(또는 항목의 일부)이 수직 또는 수평으로 이동할 때 단순히 다시 그리는 것보다 더 빠른 대안을 제공합니다. 현재 변환 및 페인트 장치(즉, 뷰포트)의 성능에 따라, 이 작업은 memmove()를 사용하여 픽셀을 한 위치에서 다른 위치로 단순히 이동하는 것으로 이루어질 수 있습니다. 대부분의 경우 이는 전체 영역을 다시 렌더링하는 것보다 빠릅니다.
스크롤 후, 항목은 새로 노출된 영역에 대해 업데이트를 발행합니다. 스크롤이 지원되지 않는 경우(예: 스크롤 최적화의 이점을 누릴 수 없는 OpenGL 뷰포트에 렌더링하는 경우), 이 함수는 update(rect)를 호출하는 것과 동일합니다.
rect참고: 스크롤은 QGraphicsItem::ItemCoordinateCache 가 활성화된 경우에만 지원됩니다. 그 외의 모든 경우, 이 함수를 호출하는 것은 update( )를 호출하는 것과 동일합니다. 해당 항목이 불투명하고 다른 항목과 겹치지 않는다는 것을 확실히 알고 있다면, 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 가 true인 경우, 이 항목은 드래그 앤 드롭 이벤트를 허용하며, 그렇지 않은 경우 드래그 앤 드롭 이벤트에 대해 투명하게 처리됩니다. 기본적으로 항목은 드래그 앤 드롭 이벤트를 허용하지 않습니다.
acceptDrops()도 참조하십시오 .
void QGraphicsItem::setAcceptHoverEvents(bool enabled)
enabled 가 true인 경우, 이 항목은 호버 이벤트를 수신하며, 그렇지 않은 경우 호버 이벤트를 무시합니다. 기본적으로 항목은 호버 이벤트를 수신하지 않습니다.
호버 이벤트는 현재 마우스 그랩퍼 항목이 없을 때 전달됩니다. 마우스 커서가 항목에 진입할 때, 항목 내부에서 이동할 때, 그리고 항목에서 빠져나갈 때 호버 이벤트가 전송됩니다. 호버 이벤트는 일반적으로 항목에 진입했을 때 해당 항목을 강조 표시하거나, 항목 위로 마우스 커서가 이동할 때 커서 위치를 추적하는 데 사용됩니다( QWidget::mouseTracking 와 동일).
부모 항목은 자식 항목보다 먼저 호버 진입 이벤트를 수신하고, 자식 항목보다 늦게 호버 이탈 이벤트를 수신합니다. 다만, 커서가 자식 항목에 진입하더라도 부모 항목은 호버 이탈 이벤트를 수신하지 않습니다. 부모 항목은 커서가 자식 항목의 영역을 포함하여 자신의 영역을 떠날 때까지 “호버 상태”를 유지합니다.
부모 항목이 자식 항목을 처리하는 경우, 커서가 자식 항목을 통과할 때 호버 이동(hover move), 드래그 이동(drag move) 및 드롭(drop) 이벤트를 수신하지만, 자식 항목을 대신하여 호버 진입(hover enter) 및 호버 이탈(hover leave), 드래그 진입(drag enter) 및 드래그 이탈(drag leave) 이벤트는 수신하지 않습니다.
창 장식(window decorations)이 적용된 QGraphicsWidget 는 acceptHoverEvents()의 값과 관계없이 호버 이벤트를 수신합니다.
acceptHoverEvents(), hoverEnterEvent(), hoverMoveEvent(), hoverLeaveEvent()도 참조하십시오 .
void QGraphicsItem::setAcceptTouchEvents(bool enabled)
enabled 가 true인 경우, 이 항목은 touch events 를 허용하며, 그렇지 않은 경우 이를 무시합니다. 기본적으로 항목은 터치 이벤트를 허용하지 않습니다.
acceptTouchEvents()도 참조하십시오 .
void QGraphicsItem::setAcceptedMouseButtons(Qt::MouseButtons buttons)
이 항목이 마우스 이벤트를 수신할 마우스 버튼 buttons 을 설정합니다.
기본적으로 모든 마우스 버튼이 허용됩니다. 항목이 특정 마우스 버튼을 허용하는 경우, 해당 버튼에 대한 마우스 클릭 이벤트가 전달되면 이 항목이 마우스 그라버 항목이 됩니다. 그러나 항목이 해당 마우스 버튼을 허용하지 않는 경우, ` QGraphicsScene `은 마우스 이벤트를 그 아래에 있는 해당 버튼을 허용하는 첫 번째 항목으로 전달합니다.
항목에 대한 마우스 이벤트를 비활성화하려면(즉, 마우스 이벤트에 대해 투명하게 만들려면) setAcceptedMouseButtons(Qt::NoButton)를 호출하십시오.
acceptedMouseButtons() 및 mousePressEvent()도 참조하십시오 .
void QGraphicsItem::setActive(bool active)
active 가 true이고 해당 장면이 활성화된 경우, 이 아이템의 패널이 활성화됩니다. 그렇지 않은 경우 패널은 비활성화됩니다.
항목이 활성화된 장면의 일부가 아닌 경우, ` active `는 장면이 활성화되거나 항목이 장면에 추가될 때 패널에 어떤 동작이 적용될지를 결정합니다. `true`인 경우, 항목이 장면에 추가되거나 장면이 활성화될 때 해당 항목의 패널이 활성화됩니다. 그렇지 않은 경우, 장면의 활성화 상태와 관계없이 항목은 비활성화된 상태로 유지됩니다.
isPanel(), QGraphicsScene::setActivePanel(), QGraphicsScene::isActive()도 참조하십시오 .
void QGraphicsItem::setBoundingRegionGranularity(qreal granularity)
경계 영역의 세분화 수준을 ` granularity`로 설정합니다. 이 값은 0부터 1까지(0 및 1 포함)의 범위 내에서 지정됩니다. 기본값은 0입니다(즉, 가장 낮은 세분화 수준으로, 경계 영역이 항목의 경계 사각형과 일치합니다).
이 세분화 수준은 boundingRegion() 함수가 항목의 경계 영역이 얼마나 정밀해야 하는지 계산하는 데 사용됩니다. 달성 가능한 가장 높은 세분화 수준은 1이며, 이 경우 boundingRegion() 함수는 해당 기기에서 가능한 가장 정밀한 윤곽선을 반환합니다(예: QGraphicsView 뷰포트의 경우, 픽셀 단위의 경계 영역을 제공합니다). 가능한 가장 낮은 세분화 수준은 0입니다. ` 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() 함수는 일반적으로 오프스크린 픽스맵 캐시에 렌더링하며, 이후의 모든 재그리기 요청에 대해 Graphics View 프레임워크는 캐시에서 다시 그립니다. 이 방식은 모든 캐시를 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 가 true인 경우, 해당 항목은 활성화된 상태이며, 그렇지 않은 경우 비활성화된 상태입니다.
비활성화된 항목은 표시되지만, 어떤 이벤트도 수신하지 않으며, 포커스를 받을 수도 없고 선택될 수도 없습니다. 마우스 이벤트는 무시되며, 해당 항목이 보이지 않는 상태이거나 마우스 이벤트를 허용하지 않는 경우( acceptedMouseButtons() 참조)를 제외하고는 전파되지 않습니다. 비활성화된 항목은 마우스 그랩퍼가 될 수 없으며, 그 결과 마우스를 그랩하고 있는 중에 항목이 비활성화되면 그랩 상태가 해제됩니다. 이는 비활성화될 때 포커스를 가지고 있었다면 포커스를 잃게 되는 것과 마찬가지입니다.
비활성화된 항목은 일반적으로 회색 계열의 색상으로 표시됩니다( QPalette::Disabled 참조).
부모 항목을 비활성화하면, 그 모든 자식 항목도 비활성화됩니다. 부모 항목을 활성화하면, 명시적으로 비활성화되지 않은 한 모든 자식 항목이 활성화됩니다(즉, 자식 항목에서 setEnabled(false)를 호출한 경우, 부모 항목이 비활성화되었다가 다시 활성화되더라도 해당 자식 항목은 다시 활성화되지 않습니다).
항목은 기본적으로 활성화되어 있습니다.
참고: 이벤트 필터를 설치한경우에도 이벤트가 항목에 전달되기 전에 이벤트를 가로챌 수 있으며, 이 메커니즘은 항목의 활성화 상태를 고려하지 않습니다.
isEnabled()도 참조하십시오 .
void QGraphicsItem::setFiltersChildEvents(bool enabled)
enabled 가 true인 경우, 이 항목은 모든 자식 항목에 대한 모든 이벤트를 필터링하도록 설정됩니다(즉, 자식 항목 중 어느 하나에 전달될 예정이었던 모든 이벤트가 대신 이 항목으로 전송됨). 반대로, enabled 가 false인 경우, 이 항목은 자체 이벤트만 처리합니다. 기본값은 false입니다.
filtersChildEvents()도 참조하십시오 .
void QGraphicsItem::setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
enabled 가 true인 경우, 항목 플래그 flag 가 활성화되며, 그렇지 않은 경우 비활성화됩니다.
flags() 및 setFlags()도 참조하십시오 .
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()는 true를 반환함), 키보드 입력은 포커스 프록시에서만 수신됩니다.
포커스 프록시 자체도 포커스 프록시를 가질 수 있으며, 이러한 구조는 계속 이어질 수 있습니다. 이 경우, 키보드 입력은 가장 바깥쪽에 위치한 포커스 프록시에서 처리됩니다.
포커스 프록시 ` 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가 됩니다.
opacity 속성은 paint() 함수에 전달되는 페인터의 상태를 결정합니다. 항목이 캐시된 상태(즉, ItemCoordinateCache 또는 DeviceCoordinateCache)인 경우, 렌더링 시 effective 속성이 항목의 캐시에 적용됩니다.
항목의 불투명도가 부모와 어떻게 결합되는지에 영향을 미치는 두 가지 항목 플래그가 있습니다: 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 가 true이고 이 항목이 선택 가능한 경우, 이 항목이 선택되며, 그렇지 않은 경우 선택이 해제됩니다.
항목이 그룹에 속해 있는 경우, 이 함수는 그룹 전체의 선택 상태를 전환합니다. 그룹이 선택되어 있으면 그룹 내 모든 항목도 선택되고, 그룹이 선택되어 있지 않으면 그룹 내 어떤 항목도 선택되지 않습니다.
보이는 상태이고, 활성화되어 있으며, 선택 가능한 항목만 선택할 수 있습니다. selected 가 true이고 이 항목이 보이지 않거나, 비활성화되어 있거나, 선택할 수 없는 경우, 이 함수는 아무런 작업도 수행하지 않습니다.
기본적으로 항목은 선택할 수 없습니다. 선택을 활성화하려면 ItemIsSelectable 플래그를 설정하십시오.
이 함수는 편의성을 위해 제공되며, 항목의 선택 상태를 개별적으로 토글할 수 있게 해줍니다. 그러나 항목을 선택하는 더 일반적인 방법은 ` QGraphicsScene::setSelectionArea()`를 호출하는 것으로, 이 함수는 씬의 지정된 영역 내에 있는 모든 표시되고, 활성화되어 있으며, 선택 가능한 항목에 대해 이 함수를 호출합니다.
isSelected() 및 QGraphicsScene::selectedItems()도 참조하십시오 .
void QGraphicsItem::setToolTip(const QString &toolTip)
아이템의 툴팁을 toolTip 로 설정합니다. toolTip 가 비어 있으면, 아이템의 툴팁이 지워집니다.
toolTip() 및 QToolTip도 참조하십시오 .
void QGraphicsItem::setTransform(const QTransform &matrix, bool combine = false)
항목의 현재 변환 행렬을 matrix 로 설정합니다.
combine 가 true인 경우, matrix 가 현재 행렬과 결합되며, 그렇지 않은 경우 matrix 가 현재 행렬을 대체합니다. combine 는 기본적으로 false입니다.
변환된 뷰를 사용하는 아이템과의 상호작용을 단순화하기 위해, 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 가 true인 경우, 해당 항목은 표시됩니다. 그렇지 않은 경우, 해당 항목은 숨겨집니다. 숨겨진 항목은 렌더링되지 않으며, 어떤 이벤트도 수신하지 않습니다. 특히, 마우스 이벤트는 숨겨진 항목을 그대로 통과하여 그 뒤에 있는 항목으로 전달됩니다. 또한 보이지 않는 항목은 선택할 수 없으며, 입력 포커스를 받을 수 없고, QGraphicsScene 의 항목 위치 확인 기능에 의해 감지되지 않습니다.
마우스를 잡은 상태(즉, 마우스 이벤트를 수신 중인 상태)에서 항목이 보이지 않게 되면, 자동으로 마우스 잡기 상태가 해제되며, 항목을 다시 보이게 해도 잡기 상태가 회복되지 않습니다. 마우스 잡기 상태를 회복하려면 새로운 마우스 클릭 이벤트를 받아야 합니다.
마찬가지로, 보이지 않는 항목은 포커스를 가질 수 없으므로, 항목이 보이지 않게 될 때 포커스를 가지고 있었다면 포커스를 잃게 되며, 단순히 항목을 다시 보이게 한다고 해서 포커스가 회복되지는 않습니다.
부모 항목을 숨기면 그 모든 자식 항목도 함께 숨겨집니다. 부모 항목을 표시하면, 명시적으로 숨겨져 있지 않은 한 모든 자식 항목이 표시됩니다(즉, 자식 항목에 setVisible(false)를 호출한 경우, 부모 항목이 숨겨졌다가 다시 표시되더라도 해당 자식 항목은 다시 표시되지 않습니다).
항목은 기본적으로 표시된 상태이므로, 새 항목에 대해 setVisible()을 호출할 필요는 없습니다.
참고: 불투명도(opacity)가 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`를 사용하여 획(stroke)을 바탕으로 도형을 생성할 수 있습니다.
이 함수는 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
항목의 유형을 int로 반환합니다. 모든 표준 그래픽 항목 클래스에는 고유한 값이 할당되어 있습니다. 자세한 내용은 QGraphicsItem::Type 를 참조하십시오. 이 유형 정보는 qgraphicsitem_cast()에서 유형을 구별하는 데 사용됩니다.
기본 구현( QGraphicsItem 내)은 UserType 를 반환합니다.
사용자 정의 항목에서 qgraphicsitem_cast()을 사용하려면 이 함수를 재구현하고, 사용자 정의 항목의 유형과 동일한 Type 열거형 값을 선언하십시오. 사용자 정의 항목은 UserType (65536)보다 크거나 같은 값을 반환해야 합니다.
예를 들어:
class Item : 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 을 T 타입으로 캐스팅한 값을 반환하고, 그렇지 않은 경우 nullptr 를 반환합니다.
참고: 사용자 정의 항목에서 이 함수가 올바르게 작동하도록하려면 , 각 사용자 정의 ` QGraphicsItem ` 하위 클래스에 대해 ` type()` 함수를 재구현하십시오.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.