2012-05-10 114 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作爲邊界/剪切矩形。