一:Graphics View框架主要特点
1、 Graphics View框架结构中可以利用QT绘图系统的反锯齿、OpenGL(硬件加速)工具改善绘图性能。
2、 Graphics View框架支持事件传播体系结构,使场景内的图元交互能力提高一倍。图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动。QWItget
3、在Graphics View框架中通过二元空间划分树,提供快速的图元查找,这样能实时的显示大场景。
二:Graphics View框架
Graphics View框架结构主要包含了场景类(QGraphicsScene(容器))、视图类 (QGraphicsView)和图元类(QGraphicsItem)。
三:QGraphicsScene
QGraphicsScene类为管理大量的2D图形item提供了一个管理界面,做为item的容器,它配合使用QGraphicsView使用来观察items,例如线,矩形,文本或者自定义的items 。
注意:QGraphicsScene场景没有自己可见的外观,他只管理items,需要创建一个QGraphicsView Widget来让场景可见。
四:QGraphicsView
QGraphicsView提供一个显示QGraphicsScene内容的窗口,在构造时候把场景对象作为参数,或者之后使用setScene()来设置view的场景,该框架还包含一个事件传递机制,允许画布和画布上的图元之间精确地双向交互。图元处理鼠标键盘事件,如鼠标按下、移动、释放、点击和双击事件,也跟踪鼠标移动。
五:实例
实例1:
QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();
实例2:
QGraphicsView view;
QGraphicsScene scene;
Scene. setSceneRect();
View. setScene(scene);
虚函数void resizeEvent(QResizeEvent *event);
六:QGraphicsScene坐标系统
七:QGraphicsView坐标
QGraphicsView 类继承自QWidget类,因此它和其他的QWidget类一样以窗口的左上角作为自己坐标系的原点。
八:QGraphicsItem
QGraphicsItem类是视图框架的一部分,是在一个QGraphicsScene中最基本的图形类,它为绘制你自己的item提供了一个轻量级的窗口,包括声明item的位置,碰撞检测,绘制重载和item之间的相互作用通过事件处理
九:QGraphicsItem的系统派生
Qt提供了一系列标准的items对一些常见的图像,非常的方便,有下面这些:
QGraphicsEllipseItem 提供一个椭圆itemQGraphicsLineItem 提供一条线的itemQGraphicsPathItem 提供一个任意的路径itemQGraphicsPixmapItem 提供一个图形itemQGraphicsPolygonItem 提供一个多边形itemQGraphicsRectItem 提供一个矩形itemQGraphicsSimpleTextItem 提供一个简单的文本itemQGraphicsTextItem 提供一个文本浏览item
十:自己派生QGraphicsItem
写自己的item图形,首先应该继承QGraphicsItem,然后重写他的两个纯虚公共函数,boundingRect()和paint(),第一个函数返回绘制item大概的区域,第二个函数用来绘制item内容
十一:坐标系
QGraphicsItem则有自己的坐标系,在调用QGraphicsItem类的paint()函数重画项目时是以此坐标系为基准。