QGraphicsScene 在clear()之后无法再添加图元 C++
时间: 2023-11-30 20:03:19 浏览: 32
如果在调用 `QGraphicsScene::clear()` 后无法再添加图元,可能是因为您没有重新设置场景的场景范围。当您调用 `QGraphicsScene::clear()` 后,场景中的所有项都被删除,但是场景的边界框不会自动重置。因此,您需要在清除场景后调用 `QGraphicsScene::setSceneRect()` 方法,以便场景的大小适合您要添加的新图元。
以下是一个示例代码片段,展示了如何在清除场景后重新设置场景大小:
```cpp
QGraphicsScene *scene = new QGraphicsScene(parent);
// 添加图元
QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem(0, 0, 100, 100);
scene->addItem(ellipse);
// 清除场景
scene->clear();
// 重新设置场景大小
scene->setSceneRect(0, 0, 500, 500);
// 添加新图元
QGraphicsRectItem *rect = new QGraphicsRectItem(0, 0, 50, 50);
scene->addItem(rect);
```
这段代码首先创建了一个 `QGraphicsScene` 对象,并添加了一个椭圆形图元。然后,它清除了场景,并重新设置了场景大小。最后,添加了一个新的矩形图元。如果您在清除场景后尝试添加新图元,而没有重新设置场景大小,您就会发现新图元无法正确显示在场景中。