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

一、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框架提供了多种坐标变换函数,如下标所示: 
这里写图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值