【发布时间】:2014-11-28 12:19:48
【问题描述】:
我应该怎么做才能删除 QGraphicsItem?
从我使用的场景中删除项目
QGraphicsScene::removeItem(QGraphicsItem * item);
来自此方法的文档:
即 QGraphicsScene 在销毁时将不再删除项目
所以我只看到一种方式:
delete item;
但可能是另一个?例如 QWidget 可以设置属性
setAttribute( Qt::WA_DeleteOnClose );
这会导致删除对象。 QGraphicsItem 可能有类似的东西吗?
【问题讨论】:
-
Item 是 QGraphics 场景中所有项目的基类。由于它不是从 QObject 或 QWidget 派生的,我相信删除它的正确方法(从场景中删除后)只是调用
delete item; -
item->deleteLater() -
@martin_pr 或者你可以使用
QGraphicsObject。 -
@ratchetfreak - 这没有什么令人困惑的地方,
deleteLater()旨在安全地删除连接到事件循环的对象,以便在处理完所有事件后进行删除。如果没有事件循环,则不需要使用deleteLater(),也不可能没有事件循环,所以你只需delete。 -
@martin_pr 是的,但你只会从一个类派生:P
标签: qt