QGraphicsScene :: addItem:item已添加到此场景中

时间:2015-10-31 14:23:16

标签: c++ qt qgraphicsscene

我尝试向QGraphicsScene添加多个项目,但在应用程序输出中调用scene->addItem(new Bonus(Bonus::BonusType::coin, randPoint, pixels, parent));后会显示以下消息:QGraphicsScene::addItem: item has already been added to this scene
我做错了什么? 代码:

for(int i = 0; i < coinsCount; ) {
    QPoint randPoint(random() % g->getWidth(),
                     random() % g->getHeight());

    if(g->getType(randPoint) != Graph::wall && !usedPoints.contains(randPoint)) {
        scene->addItem(new Bonus(Bonus::BonusType::coin, randPoint, pixels, parent));
        usedPoints.push_back(randPoint);
        i++;
    }
}

1 个答案:

答案 0 :(得分:3)

您正在传递父项。如果父项目已添加到场景中,则将其设置为新项目的父项目也会将后者添加到场景中。

构造函数在addItem()之前运行,所以当执行后者时,该项目已经在场景中。

  

请注意,这会隐式地将此图形项添加到场景中   家长。您不应该自己将项目添加到场景中。