QT之图形视图框架概述——Graphics View Framework
- 1. 概述
- 2. 核心类
- 3. 事件传递
- 4. Graphics View 坐标系统
- 5. 参考
1. 概述
Graphics View Framework
是子Qt 4.2
引入的,用来取代之前版本中的QCanvas
。Graphics View Framework
提拱了用于大量2D图形项的管理和交互的能力。当然Graphics View Framework
也支持与OpenGL
相结合进行3D模型渲染。该框架还包含了事件传播体系结构。
Graphics View Framework
采用BSP(Binary Space Partitioning,二进制空间分区)
树作为存储结构,因此提供了非常快速的图元发现功能,甚至可以包含数百万个图元。
2. 核心类
在Graphics View Framework
框架中存在三个非常重要的类,对其功能简述如下:
QGraphicsView
- 提供了用于显示
QGraphicsScene
内容的widget
- 将事件传递给
QGraphicsScene
- 提供了用于显示
QGraphicsScene
- 用于管理图元项目
- 将事件传递给每个图元
QGraphicsItem
- 是图形项的基类
- 碰撞检测
(Collision detection)
- 通过
parent-child
关系以及QGraphicsItemGroup
进行分组 - 各种事件处理
这三个类的关系:
界面显示关系:
3. 事件传递
4. Graphics View 坐标系统
- 视图坐标
与设备坐标相同,是物理坐标,一般以左上角为圆点,单位是像素
视图的坐标只与widget或者视口有关,而与场景无关,所有的鼠标事件、拖放事件的坐标首先是由视图坐标定义的,然后用户需要将这些坐标映射成场景坐标,以便程序中交互 - 场景坐标
等价于QPainter的逻辑坐标,一般以场景的中心为原点,单位是像素
场景是所有图形项的基础坐标,描述了每个顶层图形项的位置 - 图形项坐标
局部逻辑坐标,一般以图件的中心为原点
每个图形项在场景里都有一个位置坐标,是由QGraphicsItem::scenePos
给出的
示例图如下:
5. 参考
- GraphicsView坐标系统
- GraphicsViewFramework