2012-05-10 2 views
0

QGraphicsItem에서 파생 된 클래스가 Rect1의 경계 사각형을 반환합니다.QGraphicsItem 클리핑 자식입니다.

QRectF BaseControl::boundingRect() const { 
    return(Rect1); 
} 

많은 어린이들이 모두 Rect1에 클립합니다.

대신에, 내 QGraphicsItem의 boundingRect가 Rect1로 남아있는 동안 아이들이 정의한 Rect2의 내부 꼭지점으로자를 수있는 방법은 무엇입니까?

+0

최종적으로 달성하려는 유스 케이스에 대해 자세히 설명해 줄 수 있습니까? 'Rect1' (마우스 이벤트를 받거나, 부모를위한 페인트 내용은 자식이 아니라 등등)에서 할 수 있어야하는 것에 따라 간단한 해결책이있을 수 있습니다. –

답변

0

BaseControl에서 ItemClipsChildrenToShape 플래그를 설정 한 것 같습니다. 그렇다면 QGraphicsItem::shape()을 다시 구현하여 어린이가 클립 할 모양을 정의 할 수 있습니다.이 모양은 boundingRect() (기본값은 boundingRect())과 다를 수 있습니다.

아마도 더 나은 또 다른 옵션은 BaseControl의 자식이 될 컨테이너 QGraphicsItem과 클립 할 항목의 부모를 만드는 것입니다. 이 컨테이너 항목에는 ItemClipsChildrenToShape 플래그가 설정되어야하지만 BaseControl은 설정되어서는 안됩니다. 그런 식으로 BaseControl은 자체 경계 사각형 Rect1을 가질 수 있으며 컨테이너 항목은 경계/자르기 사각형으로 Rect2를 가질 수 있습니다.