2012-05-10 112 views
0

我的QGraphicsItem的派生类返回Rect1的边界矩形。QGraphicsItem剪裁儿童。

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

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

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

+0

你能提供你最终想要实现的用例的更多细节吗?根据您需要在“Rect1”中执行的操作(接收鼠标事件,为父级而不是子级绘制内容等),可能会有一个简单的解决方案。 –

回答

0

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

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