繁体   English   中英

Qt添加到QGraphicsLinearLayout时QGraphicsItems会发生什么

[英]Qt what happens to QGraphicsItems when added to QGraphicsLinearLayout

我有一个指向QGraphicsItems的指针向量,这些指针都已添加到QGraphicsLinearLayout中。

我担心内存管理。

1)添加它们后会发生什么? 他们是自动育儿还是我需要显式调用item.setParentLayoutItem(layout)?

2)如果他们是父母,Qt会处理他们的删除吗? (当父母被删除时)

3)我还有一个remove方法,可以从矢量和布局中删除该项目。 我应该在删除项目/调用vector.erase(...)...之前从布局中删除该项目,还是这取决于我是否为人父母?

1)添加它们后会发生什么? 他们是自动育儿还是我需要显式调用item.setParentLayoutItem(layout)?

从qt文档:

如果该项目同时继承QGraphicsItem和QGraphicsLayoutItem(例如QGraphicsWidget确实如此),则该项目实际上是两个所有权层次结构的一部分。 此属性指示在销毁布局时对其子项应执行的处理。 对于QGraphicsWidget,最好是在删除布局时不会删除其子级(因为它们也是图形项层次结构的一部分)。

请参阅ownedByLayoutsetOwnedByLayout

从理论上讲是这样,但是您可以使用上面两个链接提供的文档来对删除进行参数化。

2)如果他们是父母,Qt会处理他们的删除吗?

3)我还有一个remove方法,可以从矢量和布局中删除该项目。 我应该在删除项目/调用vector.erase(...)...之前从布局中删除该项目,还是这取决于我是否为人父母?

如果您的QGraphicsLayoutItem拥有(父/子关系)所有您的QGraphicsItem ,则在删除父级时将全部删除它们。

如果要删除单个元素,则可以简单地调用以下命令:

theItemYouWantToDelete->deleteLater()

应该足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM