我有一个自定义项,它继承了QGraphicsItem。它有一些子图形项作为成员变量。我应该按照什么顺序从场景中删除这些项,如何删除它们?
我有一个自定义项,它继承了QGraphicsItem。它有一些子图形项作为成员变量。我应该按照什么顺序从场景中删除这些项,如何删除它们?
class MyClass : public QGraphicsItem
{
...
private:
SomeKindOfGraphicsItem* _item1;
SomeOtherGraphicsItem* _item2;
}
MyClass::MyClass( ... ) :
QGraphicsItem( ... ),
_item1( new SomeKindOfGraphicsItem( ..., this ) ),
_item2( new SomeOtherGraphicsItem( ..., this ) )
{
...
}
MyClass
),就足以删除所有子项:
void QGraphicsScene::removeItem(QGraphicsItem * item)
将项目item及其所有子项从场景中删除。item的所有权将传递给调用者(即,当销毁时,QGraphicsScene将不再删除item)。
此外,当MyClass
对象被删除时,它将通过Qt
机制删除所有子项:
QGraphicsItem::~QGraphicsItem() [virtual]
销毁QGraphicsItem及其所有子项。如果此项当前与场景相关联,则在删除之前将从场景中删除该项。
注意:在销毁项之前,从QGraphicsScene中删除项更为高效。
this
是关键)。 - leemes
this
),可以在构造函数中或之后使用childItem->setParent(this)
来实现。 - leemes