我从 QGraphicsItem 派生的类返回 Rect1 的边界矩形。
QRectF BaseControl::boundingRect() const {
return(Rect1);
}
它的许多孩子都剪辑到 Rect1。
相反,当我的 QGraphicsItem 的 boundingRect 保持为 Rect1 时,如何让孩子们剪辑到我定义的内部 rect Rect2?
我从 QGraphicsItem 派生的类返回 Rect1 的边界矩形。
QRectF BaseControl::boundingRect() const {
return(Rect1);
}
它的许多孩子都剪辑到 Rect1。
相反,当我的 QGraphicsItem 的 boundingRect 保持为 Rect1 时,如何让孩子们剪辑到我定义的内部 rect Rect2?
我猜你已经ItemClipsChildrenToShape
在 BaseControl 上设置了标志。如果是这样,您可以简单地重新实现QGraphicsItem::shape()
以定义您希望孩子剪辑到的形状,这可以不同于boundingRect()
(boundingRect()
是默认值)。
另一个可能更好的选择是创建一个容器 QGraphicsItem,它将成为 BaseControl 的子项,以及要剪辑的项目的父项。此容器项应ItemClipsChildrenToShape
设置标志,但 BaseControl 不应。这样,BaseControl 可以拥有自己的边界矩形 Rect1,并且容器项可以拥有 Rect2 作为其边界/剪切矩形。