我有一个继承QGraphicsItem的自定义项目。它有一些子图形项作为成员变量。我应该按什么顺序从场景中删除这些项目,以及如何删除它们?
发布于 2013-01-21 20:25:55
创建成员图形项目,如下所示:
class MyClass : public QGraphicsItem
{
...
private:
SomeKindOfGraphicsItem* _item1;
SomeOtherGraphicsItem* _item2;
}MyClass::MyClass( ... ) :
QGraphicsItem( ... ),
_item1( new SomeKindOfGraphicsItem( ..., this ) ),
_item2( new SomeOtherGraphicsItem( ..., this ) )
{
...
}在这种情况下,只需从场景中移除父项(在此示例中为MyClass)就足够了。这将同时删除所有子项:
空QGraphicsScene::removeItem(QGraphicsItem * item)
从场景中移除项目项目及其所有子项目。项目的所有权将传递给调用者(即,QGraphicsScene在销毁项目时不再删除项目)。
此外,当MyClass的一个对象被删除时,它将通过Qt机制删除它的所有子对象:
虚拟QGraphicsItem::~QGraphicsItem()
销毁QGraphicsItem及其所有子对象。如果此项目当前与场景相关联,则将在删除该项目之前将其从场景中删除。
注意:在销毁项目之前从QGraphicsScene中删除该项目会更有效率。
https://stackoverflow.com/questions/14438202
复制相似问题