qt 계승 QGraphicsItem

2171 단어
qt에서 제공하는 기본 엔티티인 QGraphicsLineItem, QGraphicsTextItem, QGraphicsPixmapItem, QGraphicsPathItem 등은 때때로 모든 요구를 충족시키지 못하기 때문에 프로그램에서 QGraphicsItem 또는 그 구체적인 하위 클래스를 계승하여 필요한 엔티티를 사용자 정의합니다.QGraphcisItem을 계승합니다. 일반적으로 다시 써야 하는 구성원 함수는 다음과 같습니다.
1)virtual QRectF boundingRect() const
이 함수는 한 엔티티의 경계를 하나의 직사각형 영역으로 정의하고 엔티티의 그리기 범위도 이 직사각형 영역 안으로 제한합니다. 또한 QGraphicsView도 이 영역 범위를 이용하여 엔티티를 다시 그려야 하는지 여부를 결정합니다.엔티티의 형태는 사각형, 원형, 다각형 등과 같은 임의의 형태일 수 있지만 경계 영역은 항상 사각형이므로 엔티티의 다양한 변환에 따라 변경되지 않습니다.주의해야 할 것은 통상적으로 경계를 그릴 때 반 개의 붓의 넓이를 포함해야 한다는 것이다.다음과 같은 API 예:
QRectF CircleItem::boundingRect() const
 {
     qreal penWidth = 1;
     return QRectF(-radius - penWidth / 2, -radius - penWidth / 2,
                   diameter + penWidth, diameter + penWidth);
 }

2)virtual void paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget=0)
이 함수는 로컬 좌표에서 일반적으로 특정 엔티티 드로잉을 결정합니다.매개 변수painter는 구체적인 그림을 그립니다. 매개 변수 옵션은 일부 도원 스타일을 정의합니다. 예를 들어 선택할 때 점선 바깥쪽 경계선을 표시해야 하는지 여부 등 매개 변수widget은 기본적으로 0, 즉painter가 그리는 위치 (어느 widget에 그리는지) 입니다.다음과 같은 API 예:
 void RoundRectItem::paint(QPainter *painter,
                           const QStyleOptionGraphicsItem *option,
                           QWidget *widget)
 {
     painter->drawRoundedRect(-10, -10, 20, 20, 5, 5);
 }

3)virtual QPainterPath shape() const
QPainterPath 형식으로 도원 모양, 사용자 충돌 검측 등의 조작을 되돌려줍니다.다음 API 예
 QPainterPath RoundItem::shape() const
 {
     QPainterPath path;
     path.addEllipse(boundingRect());
     return path;
 }

4)virtual int type() const
QGraphicsItem 하위 클래스 형식 표지, 모든 표준graphicsitem 클래스는 유일한 int 값에 연결되어 있으며, qgraphicsitemcast () 함수가 형식 변환을 진행할 때, 각 피드 형식을 구분할 수 있습니다.이 함수를 다시 쓰고 Type 열거 유형을 설명하고 UserType보다 큰 값을 반환합니다(
65536)의 정수 값입니다.다음과 같은 API 예:
 class CustomItem : public QGraphicsItem
 {
    ...
    enum { Type = UserType + 1 };

    int type() const
    {
        // Enable the use of qgraphicsitem_cast with this item.
        return Type;
    }
    ...
 };

좋은 웹페이지 즐겨찾기