我应该怎么做才能删除QGraphicsItem?
要从我使用的场景中删除项目
QGraphicsScene::removeItem(QGraphicsItem * item);
来自此方法的文档:
即,QGraphicsScene将在销毁时不再删除项目
所以我只看到一种方式:
delete item;
但可能是另一个?例如,QWidget能够设置属性
setAttribute( Qt::WA_DeleteOnClose );
导致删除对象。 QGraphicsItem可能有类似内容吗?
答案 0 :(得分:4)
不幸的是,QGraphicsItem
是QGraphicsScene
内可用的所有图形项的基类,并且,大多数"类似项目" Qt中的对象不是来自QWidget
或QObject
。此外,它们只能作为另一个QGraphicsItem
的父级(除了归QGraphicsScene
所有。
从场景中删除项目后,除非它是另一个QGraphicsItem
的父级,Qt希望程序员通过显式调用delete item;
手动删除它(或使用智能指针管理生命周期删除后的项目。)
答案 1 :(得分:0)
今天这个问题似乎持续了很长时间,而且还存在一些未解决的错误。
但是似乎有一种解决方法,我发现它很有用,经过数小时的调试,阅读和调查,我在这里找到了解决方法:
此处有一些有关Graphics Scene的其他提示和技巧:https://tech-artists.org/t/qt-properly-removing-qgraphicitems/3063/6