2013-03-05 82 views
1

我有一個項目是其他項目的父項目。這不是一個團體,實際上這個項目繪製了一個三次貝塞爾曲線,孩子們是它的控制點。在QGraphisItem中移動兒童項目

問題是,移動子項會導致幾何變化,因此當移動子項時應調用父項prepareGeometryChange(),但該方法受到保護。

這只是一個例子,一般我正在尋找一個答案的問題是:

QGraphicsItem具有取決於其子幾何,和孩子們活動通過用戶交互,怎麼辦我用prepareGeometryChange()

是否有必要調用它?以這種方式建造物品併爲此使用兒童是否是錯誤的?

回答

1

我記得同樣的問題我自己,我重新實現

QGraphicsItem::itemChange(GraphicsItemChange change, const QVariant & value) 

爲兒童和家長。

當每個changeQGraphicsItem::ItemPositionChange那孩子發出一個信號,並且父母有一個相應的插槽。

+0

我猜父母會在該插槽中調用'prepareGeometryChange',對吧? – AkiRoss 2013-03-05 12:58:10

+0

當你實現'itemChange'時,如果需要的話你可以訪問'prepareGeometryChange'。 – deepmax 2013-03-05 13:01:01

+0

好吧,我知道了,發出的信號是一個「物品改變」的信號,它被傳遞給家長,然後家長準備進行變更。無論如何,我認爲它必須是這樣的。謝謝 – AkiRoss 2013-03-05 13:03:08