fat*_*ici 3 c++ qt qgraphicsitem
我有一个继承QGraphicsItem的自定义项.它有一些子图形项作为成员变量.我应该从哪个顺序删除场景中的这些项目以及如何删除它们?
像这样创建您的成员图形项:
class MyClass : public QGraphicsItem
{
...
private:
SomeKindOfGraphicsItem* _item1;
SomeOtherGraphicsItem* _item2;
}
Run Code Online (Sandbox Code Playgroud)
MyClass::MyClass( ... ) :
QGraphicsItem( ... ),
_item1( new SomeKindOfGraphicsItem( ..., this ) ),
_item2( new SomeOtherGraphicsItem( ..., this ) )
{
...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,仅从MyClass场景中删除父项(在此示例中)就足够了.这将删除所有子项:
void QGraphicsScene :: removeItem(QGraphicsItem*item)
从场景中删除项目项及其所有子项.项目的所有权传递给调用者(即,QGraphicsScene将在销毁时不再删除项目).
此外,当一个对象MyClass被删除时,它将通过Qt机制删除它的所有子对象:
QGraphicsItem ::〜QGraphicsItem()[虚]
销毁QGraphicsItem及其所有子项.如果此项目当前与场景相关联,则该项目将在删除之前从场景中删除.
注意:在销毁项目之前从QGraphicsScene中删除项目效率更高.