9.5 QGraphicsView视图框架
Qt Graphics View 用于管理交互大量定制的 2D 图形对象,提供了可视化显示对象的视图 widget,并支持缩放和旋转功能。Graphics View 使用 BSP(二元空间划分)树形,可非常快速地找到图元对象,因此即使是包含百万个图元对象的大型场景,也能实时显示。Graphics View框架包含了一个事件传播构架,允许与场景中的图元进行交互。比如:可以处理键盘事件,鼠标移动、松开、双击事件,并且可以跟踪鼠标移动。Graphics View视图本身是一个基于item的M-V架构的框架,它的每一个组件都是一个item。
Qt Graphics View框架结构主要包含三个类:场景类(QGraphicsScene)、视图类(QGraphicsView)、图元类(QGraphicsItem)。其中,场景类(QGraphicsScene)是用于管理大量图元对象的容器,视图类(QGraphicsView)是用于显示场景中的图元对象。
它们三者之间的关系:场景类相当于一张画布,图元类(QGraphicsItem)相当于画笔,在画布上绘制了各种图形后,需要将画布挂到墙壁上展示,视图类就相当于用于展示画布的这一堵墙。
示例:
代码语言:javascript复制QGraphicsScene *scene=new QGraphicsScene;
scene->addText("Hello, world!");
scene->addRect(0,40,100,100);
QGraphicsView *view=new QGraphicsView(scene);
view->show();
图 9-5-1 图形视图框架