QGraphicsScene 刷新
时间: 2023-11-06 22:58:47 浏览: 110
要刷新 QGraphicsScene,您可以使用 QGraphicsScene::update() 函数。此函数将强制刷新场景中的所有项目。如果您只需要刷新特定项目,则可以使用 QGraphicsItem::update() 函数。请注意,这些函数只会标记场景或项目需要刷新,而不会立即刷新它们。实际的刷新将在稍后的时间内发生,例如在下一个事件循环迭代中。如果您需要立即刷新场景或项目,请使用 QGraphicsView::viewport()->repaint() 函数。
相关问题
QGraphicsScene重新additem并刷新
如果您想在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()函数结束绘制。这是非常重要的,否则可能会导致内存泄漏等问题。
阅读全文