1

我从 QGraphicsItem 派生的类返回 Rect1 的边界矩形。

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

它的许多孩子都剪辑到 Rect1。

相反,当我的 QGraphicsItem 的 boundingRect 保持为 Rect1 时,如何让孩子们剪辑到我定义的内部 rect Rect2?

4

1 回答 1

1

我猜你已经ItemClipsChildrenToShape在 BaseControl 上设置了标志。如果是这样,您可以简单地重新实现QGraphicsItem::shape()以定义您希望孩子剪辑到的形状,这可以不同于boundingRect()(boundingRect()是默认值)。

另一个可能更好的选择是创建一个容器 QGraphicsItem,它将成为 BaseControl 的子项,以及要剪辑的项目的父项。此容器项应ItemClipsChildrenToShape设置标志,但 BaseControl 不应。这样,BaseControl 可以拥有自己的边界矩形 Rect1,并且容器项可以拥有 Rect2 作为其边界/剪切矩形。

于 2012-05-10T16:08:38.737 回答