python 新建一个类继承QGraphicsView并在其中绘图
时间: 2023-08-26 11:18:26 浏览: 125
好的,要新建一个类继承自 `QGraphicsView` 并在其中绘图,可以重写 `QGraphicsView` 的 `paintEvent` 方法,并在该方法中进行绘图操作。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QGraphicsView, QGraphicsScene
from PyQt5.QtGui import QPainter, QPen, QColor
from PyQt5.QtCore import Qt
import sys
class MyView(QGraphicsView):
def __init__(self):
super().__init__()
# 创建场景对象
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
# 设置视图属性
self.setRenderHint(QPainter.Antialiasing)
self.setRenderHint(QPainter.SmoothPixmapTransform)
def paintEvent(self, event):
# 调用父类的 paintEvent 方法
super().paintEvent(event)
# 创建绘图对象
painter = QPainter(self.viewport())
# 设置画笔属性
pen = QPen(QColor(255, 0, 0))
pen.setWidth(3)
pen.setStyle(Qt.DashLine)
painter.setPen(pen)
# 绘制直线
painter.drawLine(0, 0, self.width(), self.height())
if __name__ == '__main__':
app = QApplication(sys.argv)
# 创建视图对象
view = MyView()
# 显示视图
view.show()
sys.exit(app.exec_())
```
在这个示例中,我们首先导入所需的 PyQt5 模块。然后,我们创建一个继承自 `QGraphicsView` 的自定义类 `MyView`,并重写其构造函数。在构造函数中,我们创建一个 `QGraphicsScene` 对象并将其设置为视图的场景。
我们还设置了一些视图属性,包括抗锯齿和平滑图像变换。
接下来,我们重写 `paintEvent` 方法,并在该方法中进行绘图操作。我们首先调用父类的 `paintEvent` 方法以确保视图正确绘制。
然后,我们创建一个 `QPainter` 对象并设置画笔属性。我们的示例绘制了一条红色的虚线。
最后,我们创建一个 `MyView` 对象并显示它,启动应用程序的事件循环,以便我们可以与应用程序进行交互。
阅读全文