[英]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,最好是在删除布局时不会删除其子级(因为它们也是图形项层次结构的一部分)。
请参阅ownedByLayout和setOwnedByLayout
从理论上讲是这样,但是您可以使用上面两个链接提供的文档来对删除进行参数化。
2)如果他们是父母,Qt会处理他们的删除吗?
是
3)我还有一个remove方法,可以从矢量和布局中删除该项目。 我应该在删除项目/调用vector.erase(...)...之前从布局中删除该项目,还是这取决于我是否为人父母?
如果您的QGraphicsLayoutItem
拥有(父/子关系)所有您的QGraphicsItem
,则在删除父级时将全部删除它们。
如果要删除单个元素,则可以简单地调用以下命令:
theItemYouWantToDelete->deleteLater()
应该足够了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.