티스토리 뷰
QGraphicsItem 클래스는 QGraphicsScene 클래스에서(QGraphicsScene 클래스(QT C++) 참조) 사용하는 모든 그래픽 요소들이 상속하는 기본 클래스이다. QAbstractGraphicsShapeItem를 통해서 다음과 같은 클래스들이 상속받는다.
- QGraphicsEllipseItem
- QGraphicsLineItem
- QGraphicsPathItem
- QGraphicsPixmapItem
- QGraphicsPolygonItem
- QGraphicsRectItem
- QGraphicsSimpleTextItem
- QGraphicsTextItem
참조 링크 : https://doc.qt.io/qt-5/qgraphicsitem.html
class MyItem : public QGraphicsItem
{
public:
QRectF boundingRect() const override
{
qreal penWidth = 4;
return QRectF(-5 - (penWidth / 2), -5 - (penWidth / 2),
10 + penWidth, 10 + penWidth);
}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget) override
{
painter->drawRoundedRect(-5, -5, 10, 10, 5, 5);
}
};
자신만의 그래픽 요소를 만들고 싶다면 위의 예제 코드처럼 QGraphicsItem를 상속받는 클래스를 만들고 boundingRect()와 paint() 함수를 재정의 하여 작성하면 된다. 재정의 가능 함수는 다음과 같다.
void advance(int phase) : 시작 시 0, 다음에 1로 씬에서 호출된다.
QRectF boundingRect() : 항목의 영역 정의를 위해서 호출된다.
bool contains(const QPointF &point) : 지정한 좌표에 속하는지 확인하기 위해 뷰에서 호출된다.
void paint(QPainter *painter, QStyleOptionGraphicsItem *option, QWidget *widget = 0) : 뷰에서 출력으로 호출
주요 함수와 슬롯들은 다음과 같다.
bool isEnabled()
void setEnabled(bool enabled) : 사용 가능 여부 조회 및 설정. false면 선택/입력/이벤트를 받을 수 없다.
bool isActive() : 활성화 여부 조회. 상위 씬의 활성화되어야 항목도 활성화
QGraphicsItem::GraphicsItemFlags flags()
void setFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
void setFlags(QGraphicsItem::GraphicsItemFlags flags) : 항목의 플래그 조회 및 설정.
기본값은 없고, QGraphicsItem::ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemIsFocusable,
ItemClipsChildrenToShape, ItemIgnoresTransformations, ItemIgnoresParentOpacity,
ItemDoesntPropagateOpacityToChildren, ItemStacksBehindParent, ItemUsesExtendedStyleOption,
ItemHasNoContents, ItemSendsGeometryChanges, ItemAcceptsInputMethod, ItemNegativeZStacksBehindParent,
ItemIsPanel, ItemSendsScenePositionChanges, ItemContainsChildrenInShape
bool isSelected()
void setSelected(bool selected) : 선택 여부 조회 및 설정. 보임/사용가능/선택가능(플래그) 상태의 항목만 선택 가능
bool acceptDrops()
void setAcceptDrops(bool on) : 항목이 끌어다 놓기 이벤트를 받는지 여부 조회 및 설정.
bool acceptTouchEvents()
void setAcceptTouchEvents(bool enabled) : 항목이 터치 이벤트를 받는지 여부 조회 및 설정.
Qt::MouseButtons acceptedMouseButtons()
void setAcceptedMouseButtons(Qt::MouseButtons buttons) : 어떤 마우스 이벤트를 받는지 조회 및 설정.
QList<QGraphicsItem *> childItems()
QGraphicsItem *parentItem()
void setParentItem(QGraphicsItem *newParent)
qreal zValue()
void setZValue(qreal z)
void stackBefore(const QGraphicsItem *sibling) : 부모, 자식 항목, 순서 조회 및 바꾸기.
QCursor cursor()
bool hasCursor()
void setCursor(const QCursor &cursor)
void unsetCursor() : 커서 조회 및 설정.
QVariant data(int key)
void setData(int key, const QVariant &value) : 키 값으로 사용자 데이터 조회 및 설정.
bool isVisible()
void show()
void hide()
qreal opacity()
void setOpacity(qreal opacity)
void setVisible(bool visible) : 보이기/숨기기, 투명도(0.0~1.0, 0.0이 투명) 조회 및 설정
qreal x()
qreal y()
QPointF pos()
void setX(qreal x)
void setY(qreal y)
void setPos(const QPointF &pos)
void setPos(qreal x, qreal y) : 위치 조회 및 설정.
qreal scale()
void setScale(qreal factor) : 배율 조회 및 설정.
qreal rotation()
void setRotation(qreal angle) : 회전값(시계방향) 조회 및 설정.
'C | C++' 카테고리의 다른 글
QVariant 클래스(QT C++) (0) | 2024.03.19 |
---|---|
QSettings 클래스(QT C++) (0) | 2024.03.18 |
QGraphicsScene 클래스(QT C++) (0) | 2024.03.13 |
QGraphicsView 클래스(QT C++) (0) | 2024.03.13 |
QTableView 클래스(QT C++) (0) | 2024.03.08 |