pyqt QGraphicsView
时间: 2025-06-18 22:40:37 浏览: 15
### PyQt QGraphicsView 使用教程
#### 创建基本图形视图框架
为了构建一个基于 `QGraphicsView` 的应用程序,在主窗口或相应的 `QWidget` 中初始化 `QGraphicsScene` 和 `QGraphicsView` 是必要的。这二者分别作为图形项的容器以及这些项目的可视化窗口[^1]。
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView, QGraphicsEllipseItem
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
scene = QGraphicsScene(self)
view = QGraphicsView(scene, self)
# 设置中心部件为中心窗口的小部件,这里设置为view
self.setCentralWidget(view)
```
#### 添加图形项目至场景
一旦有了 `QGraphicsScene` 实例,就可以向其添加各种类型的图形对象,比如椭圆形。通过创建 `QGraphicsEllipseItem` 并将其加入到之前定义好的 `scene` 对象中实现这一点。
```python
def setup_scene(self):
ellipse_item = QGraphicsEllipseItem(0, 0, 80, 40) # 定义椭圆的位置和大小
brush = QtGui.QBrush(QtCore.Qt.red) # 设定画刷颜色
pen = QtGui.QPen(QtCore.Qt.black) # 设定轮廓线的颜色
ellipse_item.setBrush(brush) # 应用画刷给椭圆填充颜色
ellipse_item.setPen(pen) # 给椭圆设定边框线条样式
self.scene.addItem(ellipse_item) # 将椭圆添加到场景里
```
#### 缩放和平移功能
对于更复杂的交互需求,如缩放和平移,可以利用 `QGraphicsView.scale()` 方法来调整视图的比例尺而不改变实际场景尺寸;另外还可以重写鼠标事件处理程序来自定义平移行为[^3]。
```python
def wheelEvent(self, event): # 处理滚轮事件以支持缩放
zoom_in_factor = 1.25 # 放大因子
zoom_out_factor = 1 / zoom_in_factor # 缩小因子
if event.angleDelta().y() > 0:
scale_factor = zoom_in_factor # 如果向上滚动,则放大
else:
scale_factor = zoom_out_factor # 否则缩小
self.view.scale(scale_factor, scale_factor) # 执行缩放操作
```
阅读全文
相关推荐

















