1

私の QGraphicsItem からの派生クラスは、Rect1 のバウンディング rect を返します。

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

その多くの子はすべて Rect1 にクリップされます。

代わりに、QGraphicsItem の boundingRect が Rect1 のままである間に、私が定義した内側の rect Rect2 に子供をクリップさせるにはどうすればよいですか?

4

1 に答える 1

1

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

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

于 2012-05-10T16:08:38.737 に答える