QGraphicsItemの派生クラスは、Rect1の境界矩形を返します。QGraphicsItemクリッピング子。
QRectF BaseControl::boundingRect() const {
return(Rect1);
}
多くの子はすべて、Rect1にクリップします。
代わりに、私のQGraphicsItemのboundingRectがRect1のままである間に、私が定義したRect2内のRect2にクリップさせる方法を教えてください。
QGraphicsItemの派生クラスは、Rect1の境界矩形を返します。QGraphicsItemクリッピング子。
QRectF BaseControl::boundingRect() const {
return(Rect1);
}
多くの子はすべて、Rect1にクリップします。
代わりに、私のQGraphicsItemのboundingRectがRect1のままである間に、私が定義したRect2内のRect2にクリップさせる方法を教えてください。
BaseControlにItemClipsChildrenToShape
フラグを設定していると思います。その場合は、単にQGraphicsItem::shape()
を再実装して、子供がクリップする図形を定義することができます。これは、boundingRect()
(デフォルトはboundingRect()
)とは異なる場合があります。
もう1つのオプションは、BaseControlの子となるコンテナーQGraphicsItemと、クリップするアイテムの親を作成することです。このコンテナ項目にはItemClipsChildrenToShape
フラグが設定されている必要がありますが、BaseControlは設定しないでください。このように、BaseControlは独自の境界矩形Rect1を持つことができ、コンテナアイテムはその境界/クリッピング矩形としてRect2を持つことができます。
最終的に達成しようとしているユースケースについて詳しく説明できますか?あなたの 'Rect1'(マウスイベントを受け取ったり、親のためのコンテンツをペイントしますが、子どもはペイントしないなど)の中で何ができるかによって、単純な解決策があるかもしれません。 –