我应该做些什么来删除QGraphicsItem?
若要从场景中删除项目,请执行以下操作
QGraphicsScene::removeItem(QGraphicsItem * item);来自此方法的文档:
也就是说,QGraphicsScene在销毁时将不再删除项目
所以我只看到一种方法:
delete item;但可能是另一种?例如,对于QWidget,可以设置属性
setAttribute( Qt::WA_DeleteOnClose );这会导致删除对象。QGraphicsItem可能也有类似的地方吗?
发布于 2014-11-28 13:25:29
不幸的是,QGraphicsItem是在QGraphicsScene中可用的所有图形项的基类,作为Qt中大多数“类似项”的对象,它不是从QWidget或QObject派生的。此外,它们只能由另一个QGraphicsItem (除了由QGraphicsScene拥有)父子关系。
在从场景中删除一个项目之后,除非它是另一个QGraphicsItem的父级,否则Qt希望程序员通过显式调用delete item;来手动删除它(或者使用智能指针来管理项目被删除后的生存期)。
发布于 2020-05-27 16:06:39
今天这个问题似乎持续了很长一段时间,而且也有一些开放的bug。
但它似乎有一个解决办法,我觉得它很有用,经过几个小时的调试、阅读和调查,我在这里找到了它:
这里还有一些关于图形场景的技巧和技巧:https://tech-artists.org/t/qt-properly-removing-qgraphicitems/3063/6
https://stackoverflow.com/questions/27188538
复制相似问题