2011-11-20 55 views
0

我现在已经尝试了好几个小时,以了解QGraphicsItem如何处理孩子。我创建了一个新的QGraphicsItem B(实际上是它自己的一个子类),然后通过调用B上的setParentItem方法将它添加到另一个QGraphicsItem A.作为子对象。紧接在A之后,A具有B作为子对象。我已经验证了一些迭代A的子代的调试代码。然后,A被添加到管理器中的As列表中。在程序稍后的一段时间,在QWidget中,列表迭代器是从管理器获得的。然后我遍历As的列表,并检查每个孩子的所有孩子都不见了。我在调试器中验证过管理器实际上是同一个实例,列表也是同一个实例。不知何故,这让我非常困惑,在Qt FWK中,谁决定我的A物品不再需要他们的孩子?QGrahicsItem和他们的子女

我是Qby和C++的newby,也有从java到objective-c的丰富开发经验,所以我有一些希望它是Qt的特长,我不知道,并不完全是我自己的愚蠢。 。

最好的问候,

安德烈

+2

请将构建B的代码的相关部分发布到B中,并将其添加到A.它可能是一个对象生存期问题。 – Mat

+0

这是一个对象生命期问题。我存储了一个对本地对象的引用,并试图在另一个作用域中访问它。 –

回答

0

FYI: QGraphicsItemGroup专门针对分组设计。

//组所有选定的项目一起

QGraphicsItemGroup *基团= scene-> createItemGroup(scene-> selecteditems());