pyqt5教程QGraphicsScene及QGraphicsView使用基础

1. QGraphicsScene和QGraphicsView的作用

QGraphicsScene和QGraphicsView是QT中的两个重要的类。QGraphicsScene提供了一个2D图形场景,用于放置各种图形项,这些图形项可以是图形、文本、甚至是自定义的复杂对象。QGraphicsView是一个用于查看QGraphicsScene的视图类,可以将场景中的图形项显示在窗口中,同时提供了图形项的缩放、平移等功能。

2. QGraphicsScene的基本使用

2.1 创建QGraphicsScene

首先,我们需要创建一个QGraphicsScene对象,可以通过以下代码实现:

from PyQt5.QtWidgets import QGraphicsScene

scene = QGraphicsScene()

在上述代码中,我们使用了PyQt5中的QGraphicsScene类,并创建了一个名为scene的场景对象。

2.2 添加图形项到场景

接下来,我们可以向场景中添加图形项,例如矩形、椭圆等。以下是一个添加矩形图形项的示例:

from PyQt5.QtCore import QRectF

from PyQt5.QtGui import QColor, QPen, QBrush

from PyQt5.QtWidgets import QGraphicsRectItem

rect = QGraphicsRectItem(QRectF(0, 0, 100, 100))

rect.setPen(QPen(QColor(255, 0, 0)))

rect.setBrush(QBrush(QColor(0, 255, 0)))

scene.addItem(rect)

在上述代码中,我们使用了QGraphicsRectItem类创建了一个矩形图形项,并设置了矩形的位置和尺寸。然后,我们使用setPen方法设置了矩形的边框颜色,使用setBrush方法设置了矩形的填充颜色。最后,使用addItem方法将矩形图形项添加到了场景中。

2.3 显示场景

在场景中添加了图形项后,我们需要创建一个QGraphicsView对象来显示场景。以下是一个简单的示例:

from PyQt5.QtWidgets import QGraphicsView

view = QGraphicsView(scene)

view.show()

在上述代码中,我们创建了一个QGraphicsView对象,并传入了之前创建的场景对象scene。然后,调用show方法来显示视图。

3. QGraphicsView的基本使用

3.1 缩放和平移

QGraphicsView提供了缩放和平移场景的功能,可以通过以下代码实现:

view.setRenderHints(QPainter.Antialiasing)

view.setInteractive(True)

view.setDragMode(QGraphicsView.ScrollHandDrag)

view.setTransformationAnchor(QGraphicsView.AnchorUnderMouse)

view.setResizeAnchor(QGraphicsView.AnchorUnderMouse)

view.scale(0.8, 0.8)

view.translate(50, 50)

在上述代码中,我们首先使用setRenderHints方法开启了抗锯齿功能。然后,设置了视图的交互模式为ScrollHandDrag,即拖拽模式可以用于平移场景。接下来,我们设置了缩放和平移的锚点为当前鼠标所在位置,这样可以在缩放和平移时更加灵活。最后,使用scale方法和translate方法进行缩放和平移操作。

4. 总结

本文介绍了pyqt5中QGraphicsScene和QGraphicsView的基本使用。通过创建场景对象,并向场景中添加图形项,然后使用视图对象来显示场景,可以实现简单的图形展示。此外,QGraphicsView还提供了缩放和平移场景的功能,可以根据需要调整视图的显示效果。

后端开发标签