QGraphicsScene重新additem并刷新
时间: 2023-07-11 19:23:10 浏览: 86
如果您想在QGraphicsScene中添加新项并刷新场景,则可以按照以下步骤操作:
1.首先,创建一个新的QGraphicsItem对象,例如QGraphicsRectItem,QGraphicsEllipseItem等。
2.使用QGraphicsScene的addItem()函数将该项添加到场景中。
3.调用QGraphicsView的viewport()函数获取视图的视口,并使用QPainter的begin()函数开始绘制。
4.在绘制之前,使用QPainter的eraseRect()函数清除视口中的所有内容。
5.调用QGraphicsScene的render()函数以在视口中绘制场景。
6.使用QPainter的end()函数结束绘制并刷新视口以显示新项。
以下是一个示例代码片段,其中添加了一个新的QGraphicsRectItem并刷新场景:
```
QGraphicsRectItem *newItem = new QGraphicsRectItem(QRectF(0, 0, 100, 100));
scene->addItem(newItem);
QPainter painter(view->viewport());
painter.eraseRect(view->viewport()->rect());
scene->render(&painter);
painter.end();
```
注意:在使用QPainter绘制视口时,请确保始终使用end()函数结束绘制。这是非常重要的,否则可能会导致内存泄漏等问题。
相关问题
QGraphicsScene 重新添加item刷新
如果您想在QGraphicsScene中添加新项并刷新场景,则可以按照以下步骤操作:
1. 首先,创建一个新的QGraphicsItem对象,例如QGraphicsRectItem,QGraphicsEllipseItem等。
2. 使用QGraphicsScene的addItem()函数将该项添加到场景中。
3. 调用QGraphicsView的viewport()函数获取视图的视口,并使用QPainter的begin()函数开始绘制。
4. 在绘制之前,使用QPainter的eraseRect()函数清除视口中的所有内容。
5. 调用QGraphicsScene的render()函数以在视口中绘制场景。
6. 使用QPainter的end()函数结束绘制并刷新视口以显示新项。
以下是一个示例代码片段,其中添加了一个新的QGraphicsRectItem并刷新场景:
```cpp
QGraphicsRectItem *newItem = new QGraphicsRectItem(QRectF(0, 0, 100, 100));
scene->addItem(newItem);
QPainter painter(view->viewport());
painter.eraseRect(view->viewport()->rect());
scene->render(&painter);
painter.end();
```
注意:在使用QPainter绘制视口时,请确保始终使用end()函数结束绘制。这是非常重要的,否则可能会导致内存泄漏等问题。
QGraphicsScene 刷新
如果您想刷新QGraphicsScene以显示新的项,请按照以下步骤操作:
1. 使用QGraphicsScene的clear()函数清除所有的项。
2. 使用QGraphicsScene的addItem()函数添加新的项。
3. 调用QGraphicsView的viewport()函数获取视图的视口,并使用QPainter的begin()函数开始绘制。
4. 在绘制之前,使用QPainter的eraseRect()函数清除视口中的所有内容。
5. 调用QGraphicsScene的render()函数以在视口中绘制场景。
6. 使用QPainter的end()函数结束绘制并刷新视口以显示新项。
以下是一个示例代码片段,其中清除了所有项并添加了新项以刷新场景:
```cpp
scene->clear();
QGraphicsRectItem *newItem = new QGraphicsRectItem(QRectF(0, 0, 100, 100));
scene->addItem(newItem);
QPainter painter(view->viewport());
painter.eraseRect(view->viewport()->rect());
scene->render(&painter);
painter.end();
```
注意:在使用QPainter绘制视口时,请确保始终使用end()函数结束绘制。这是非常重要的,否则可能会导致内存泄漏等问题。
阅读全文