如何在场景中找到一个项目

时间:2014-11-12 08:58:12

标签: c++ qt qgraphicsscene

如何在场景中找到特定项目并将其删除。 我已经宣布了一个graphicsitem并将其添加到场景中。现在在某些情况下,我必须从场景中删除该项目,但在从场景中删除项目之前,我想知道该项目是否已添加到场景中。如果我尝试删除未添加到场景中的项目,我会收到以下错误:

"QGraphicsScene::removeItem: item 0x121c520's scene (0x0) is different from this scene (0x1143850)"

未选择该项目,因此我无法使用scene() - > selectedItem()列表。

1 个答案:

答案 0 :(得分:2)

您可以检查从调用QGraphicsItem::scene()返回的指针。它将返回场景,如果场景中不存在,则返回NULL。

// assuming item is a class derived from QGraphicsItem
if(item->scene() != nullptr) // nullptr from C++ 11, else use NULL
{
    // item is in a scene
}