繁体   English   中英

如何删除有一些子项作为成员的QGraphicsItem?

[英]How to delete a QGraphicsItem which have some child items as member?

我有一个继承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)

从场景中删除项目项及其所有子项。 项目的所有权传递给调用者(即,QGraphicsScene将在销毁时不再删除项目)。

此外,当MyClass一个对象被删除时,它将通过Qt机制删除它的所有子Qt

QGraphicsItem ::〜QGraphicsItem()[虚]

销毁QGraphicsItem及其所有子项。 如果此项目当前与场景相关联,则该项目将在删除之前从场景中删除。

注意:在销毁项目之前从QGraphicsScene中删除项目效率更高。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM