重写paintEvent后 QGraphicsView 中QGraphicsScene的内容不显示
时间: 2023-08-26 14:18:27 浏览: 152
如果您重写了 `paintEvent` 函数,那么可能会影响到 `QGraphicsView` 的绘制方式。因此,需要在重写 `paintEvent` 函数时,同时也重写 `QGraphicsView` 中的 `drawBackground` 和 `drawForeground` 函数,并在这些函数中调用 `QGraphicsScene` 的绘制函数。
以下是一个示例代码,用于在 `paintEvent` 函数中绘制 `QGraphicsView` 的背景和前景,并调用 `QGraphicsScene` 的绘制函数来显示场景内容:
```python
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene
from PyQt5.QtGui import QPainter
class MyGraphicsView(QGraphicsView):
def __init__(self):
super().__init__()
self.setScene(QGraphicsScene(self))
def paintEvent(self, event):
painter = QPainter(self.viewport())
self.drawBackground(painter, self.viewport().rect())
self.scene().render(painter)
self.drawForeground(painter, self.viewport().rect())
```
在这个示例中,我们先调用 `drawBackground` 函数来绘制视图的背景,然后调用 `QGraphicsScene` 的 `render` 函数来绘制场景内容,最后调用 `drawForeground` 函数来绘制视图的前景。这样就可以在重写 `paintEvent` 函数后正确显示 `QGraphicsScene` 的内容了。
阅读全文