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还提供了缩放和平移场景的功能,可以根据需要调整视图的显示效果。