2012-05-10 4 views
0

QGraphicsItemの派生クラスは、Rect1の境界矩形を返します。QGraphicsItemクリッピング子。

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

多くの子はすべて、Rect1にクリップします。

代わりに、私のQGraphicsItemのboundingRectがRect1のままである間に、私が定義したRect2内のRect2にクリップさせる方法を教えてください。

+0

最終的に達成しようとしているユースケースについて詳しく説明できますか?あなたの 'Rect1'(マウスイベントを受け取ったり、親のためのコンテンツをペイントしますが、子どもはペイントしないなど)の中で何ができるかによって、単純な解決策があるかもしれません。 –

答えて

0

BaseControlにItemClipsChildrenToShapeフラグを設定していると思います。その場合は、単にQGraphicsItem::shape()を再実装して、子供がクリップする図形を定義することができます。これは、boundingRect()(デフォルトはboundingRect())とは異なる場合があります。

もう1つのオプションは、BaseControlの子となるコンテナーQGraphicsItemと、クリップするアイテムの親を作成することです。このコンテナ項目にはItemClipsChildrenToShapeフラグが設定されている必要がありますが、BaseControlは設定しないでください。このように、BaseControlは独自の境界矩形Rect1を持つことができ、コンテナアイテムはその境界/クリッピング矩形としてRect2を持つことができます。

関連する問題