您的位置:首页 > 编程语言 > Qt开发

Qt图形视图框架一--概述

2017-07-25 15:40 288 查看

一、Graphics View 的特点

  1.Graphics View框架结构中,系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能;

  2.Graphics View支持事件传播体系结构,可以使图元在场景(scene)中的交互能力提高1倍,图元能够处理键盘事件和鼠标事件。其中,鼠标事件包括鼠标按下、移动、释放和双击,还可以跟踪鼠标的移动;

  3.在Graphics View框架中,通过二元空间划分树提供快速的图元查找,这样就能够实时地显示包含上百万个图元的大场景。

二、Graphics View的三元素

1.场景类(QGraphicsScene)

  场景类提供了一个用于管理位于其中的众多图元的容器。场景类本身是不可见的,必须通过与之相连的视图类来显示及与外界进行交互操作。

  场景类的常用操作如下:

  QGraphicsScene::addItem():添加一个图元到场景中,注意不能在线程中添加Item,如需要在线程中添加则可以通过信号和槽来添加

  QGraphicsScene::items():返回场景中所以图元;

  QGraphicsScene::itemAt():返回指定点的顶层图元;

  

2.视图类(QGraphicsView)

  视图类用于显示场景中的图元,一个场景可以通过多个视图表现,也可以为相同的数据集提供几种不同的视图。

  

3.图元类(QGraphicsItem)

  图元类是场景中各个图元的基类,在它的基础上可以继承出各种图元类。Qt中已经预置了如下图元:直线图元(QGraphicsLineItem)椭圆图元(QGraphicsEllipseItem)文本图元(QGraphicsTextItem)矩形图元(QGraphicsRectItem)等。当然用户可以继承QGraphicsItem实现符合自己需要的图元。

  QGraphicsItem主要有以下几点功能:

  1.处理鼠标按下、移动、释放、双击、悬停、滚轮、和右键菜单事件;

  2.处理键盘输入事件;

  3.处理拖拽事件;

  4.分组;

  5.碰撞检测。

三、Graphics View的坐标系统

  Graphics View坐标是基于笛卡尔坐标系,三个Graphics View基本类有各自不同的坐标系。当然Graphics View提供了三个坐标系统之间的转换函数。在绘制图形时,Graphics View的场景坐标对应QPainter的逻辑坐标、视图坐标和设备坐标。

  

1.场景坐标

  场景坐标是所有图元的基础坐标系统。QGraphicsScene类的坐标系以中心原点(0, 0),X轴正方向向右,Y轴正方向向下,如下图所示:

  


2.视图坐标

  视图坐标是窗口部件的坐标。视图坐标的单位是像素。QGraphicsView类的左上角是(0,0),X轴正方向向右,Y轴正方向向下。如下图所示:

  


  

3.图元坐标

  图元使用自己的本地坐标,这个坐标系统通常以图元中心为原点,这也是所有变换的原点。图元坐标方向是X轴正方向向右,Y轴正方向向下。图元创建后,只需注意图元坐标就可以了,QGraphicsScene和QGraphicsView会完成所有的变换。图元坐标如下图所示:

  


  Fraphics View框架提供了多种坐标变换函数,如下标所示: 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: