2013-03-05 95 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