QGraphicsItem剪辑儿童。

时间:2012-05-10 11:37:19

标签: c++ qt qgraphicsitem

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

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

它的很多孩子都剪辑到了Rect1。

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

1 个答案:

答案 0 :(得分:0)

我猜你在BaseControl上设置了ItemClipsChildrenToShape标志。如果是这样,您只需重新实现QGraphicsItem::shape()即可定义您希望子项剪辑到的形状,这可能与boundingRect()不同(boundingRect()是默认值)。

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