QT Graphics View 框架介绍

本文介绍了QT的Graphics View框架,它为2D绘图提供强大解决方案,适用于需要复杂2D绘图功能的软件开发。框架由QGraphicsItem、QGraphicsScene和QGraphicsView三个主要类构成,支持图元绘制、事件处理、视图缩放等功能。在鼠标可用性测试项目中,该框架用于实现图元的选择、移动等交互操作。
我在一个鼠标可用性测试的项目里面用到了QT的Graphics View框架(使用Python+PyQt),这是一篇简单的介绍文章,Graphics View框架为2D绘图提供一个简单,容易使用,功能强大的解决方案,如果你正在开发需要复杂2D绘图功能的软件,可以考虑使用它。

QT的2D绘图系统结构

QT的2D绘图系统可以分作为两层,包括底层的绘图引擎和上层的图元绘制框架。

基础的绘图引擎主要包括QPainter,QPaintDevice和QPaintEngine类。其中我们一般使用到的的是处于最上层的QPainter,它包含大量的画点,画线,基础图形,组合图形,文本,光栅图像等功能,类似于GDI编程里面的DC(设备上下文)或者MFC中的包装类CDC。

在基础的绘图引擎之上,QT又提供了基于图元的绘制和管理框架,所谓图元,请考虑我们常使用的UML图中表示一个类的图形,它可能包括3个矩形,上面的矩形包括类名的文本,中间的包括多个属性名文本,下面的包括多个方法名文本,不同的矩形使用不同的刷子填充...无论上面的描述多么复杂,我们都可以抽象的看待类的图形为一个图元,而UML工具需要处理图元的选择,移动等事件。而QT的Graphics View框架则为上述功能提供了强有力的支持。

Graphics View 框架

整个Graphics View框架也是由3个主要的类组成,分别是QGrphicsItem,QGraphicsScene和QGraphicsView。

其中Item定义了图元,它的实现通常包括绘制自身和响应发生在自己身上的鼠标/键盘事件,并且Item的绘制是基于它本身的局部坐标系的。

而Scene则定义了整个场景,它包含所有需要绘制的图元(Item),把它们放在合适的位置,处理整个Scene的鼠标/键盘事件,根据用户的操作改变图元的状态(是否被选中等等),按需要更新需要重新绘制的区域,向包含的图元广播鼠标/键盘的事件,处理图元间的覆盖关系,碰撞检测等等。其中图元在Sc
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值