QGraphicsScene 在clear()之后setSceneRect()仍然无法再添加图元 C++
时间: 2023-10-09 17:12:56 浏览: 66
如果在调用 `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(scene->sceneRect());
scene->addItem(rect);
// 添加新图元
QGraphicsRectItem *newRect = new QGraphicsRectItem(0, 0, 50, 50);
newRect->setPos(50, 50);
scene->addItem(newRect);
```
这段代码首先创建了一个 `QGraphicsScene` 对象,并添加了一个椭圆形图元。然后,它清除了场景,并重新设置了场景大小。接下来,它添加了一个简单的矩形项,以确保场景范围已正确设置。最后,添加了一个新的矩形图元。
请注意,新图元的位置和大小是正确的,并且没有被其他图元覆盖。如果您仍然无法添加新图元,请检查新图元的位置和大小是否正确,并确保它们在场景范围内。
阅读全文