PyQt6/PySide6 的 QGraphicsView/QGraphicsScene
时间: 2025-06-12 09:32:49 浏览: 15
### PyQt6 和 PySide6 中 QGraphicsView 和 QGraphicsScene 的用法及区别
#### 1. **QGraphicsScene 的基本概念**
`QGraphicsScene` 是 `PyQt6` 或 `PySide6` 提供的一个类,用于管理大量的二维图形项(`QGraphicsItem`)。它是一个逻辑上的画布,所有的绘图操作都在这个场景上完成。可以通过两种方式初始化该对象:
- 使用矩形区域定义场景范围:
```python
scene = QtWidgets.QGraphicsScene(QtCore.QRectF(0, 0, 200, 200)) # 定义一个矩形区域作为场景边界
```
- 使用坐标和尺寸参数创建场景:
```python
scene = QtWidgets.QGraphicsScene(-100, -100, 200, 200) # 左下角为 (-100, -100),宽高分别为 200x200
```
上述方法分别对应于引用中的描述[^1]。
#### 2. **QGraphicsView 的功能概述**
`QGraphicsView` 则是负责展示 `QGraphicsScene` 上的内容的窗口部件。它是用户界面的一部分,提供了滚动条、缩放等功能来查看复杂的场景内容。两者的关系可以理解为,“视图”是对“场景”的观察窗口[^2]。
以下是设置 `QGraphicsView` 并关联到 `QGraphicsScene` 的简单例子:
```python
from PySide6 import QtWidgets, QtCore
app = QtWidgets.QApplication([])
scene = QtWidgets.QGraphicsScene()
view = QtWidgets.QGraphicsView(scene)
view.setWindowTitle("QGraphicsView Example")
ellipse_item = scene.addEllipse(50, 50, 80, 40, brush=QtCore.Qt.red) # 添加椭圆
rect_item = scene.addRect(70, 90, 60, 30, pen=QtCore.Qt.blue, brush=QtCore.Qt.green) # 添加矩形
view.show()
app.exec()
```
在这个示例中,通过向 `QGraphicsScene` 添加不同的几何形状(如椭圆和矩形),这些项目会自动呈现在由 `QGraphicsView` 显示出来的界面上。
#### 3. **两者的联系与差异**
尽管它们紧密相连,但各自的功能侧重点有所不同:
- **职责划分**: `QGraphicsScene` 主要处理数据结构层面的任务——存储并维护所有图形项;而 `QGraphicsView` 更关注渲染以及交互体验方面的工作。
- **性能优化**: 场景支持高效的碰撞检测算法以及其他高级特性以便更好地服务于大型复杂的应用程序开发需求。
因此,在实际应用过程中,开发者通常先构建好自己的自定义场景及其内部元素之后再将其嵌入至某个特定类型的视图组件之中从而实现完整的可视化效果展现给终端使用者看到。
---
###
阅读全文
相关推荐

















