我尝试向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++;
}
}
答案 0 :(得分:3)
您正在传递父项。如果父项目已添加到场景中,则将其设置为新项目的父项目也会将后者添加到场景中。
构造函数在addItem()
之前运行,所以当执行后者时,该项目已经在场景中。
请注意,这会隐式地将此图形项添加到场景中 家长。您不应该自己将项目添加到场景中。