QT中QGraphics的view,scene,items的关系

用通俗易懂的话讲清楚view,scene,items三者之间的关系,如果有不对的地方,接受大家的批评指正。

items就好比各种事物,是实实在在存在的;

scene就好比现实中的场景,也是实实在在存在的,scene本身没有边界,里面可以放置很多事物,即items。

view即为视窗,你可以理解为一个摄像机,把摄像机放在scene前,摄像机的取景框是有边界的,所以从view看到的scene只是scene的一部分,我们转动摄像机的镜头就可以看到scene的其他地方。

view层可以做的事情就是缩放视窗,转动视窗,移动视窗。这些操作很好理解,还是摄像机,我们调整摄像机镜头的焦段,放大后看到的items就变大了,但是场景中显示的内容就变少了,反之亦然。转动和移动视窗就是对摄像机的拍摄角度进行调整。其他的操作例如鼠标操作点击,拖动items在这一层是没办法实现的,items是实际存在的,你所能操作的只是摄像机里面的图像,实际物体并没有发生变化。所以要想对事物进行操作,就需要将鼠标信号向后传递。

scene相当于一个大大的容器,里面存放着items,收到前面传来的信号之后,添加item就是向scene中添加事物,其他的可以类比。能对scene层进行的操作也可以类比了,就是场景的背景,布局等待,天空的颜色,地形地貌等等,简单点就是画板的背景。对场景scene的变动跟items是有很多关系的,一个个items的变动组成了场景scene的变动。具体到某一个事物的操作,就要转到item了。

item就是一个特定的事物,比如一张桌子,我要搬动他,在计算机里的操作就是通过鼠标选中图元,然后拖动图元,这里选中操作是在场景里找到这个桌子,而找到后要进行的操作就是针对桌子这个事物了。

前面讲到的是信号如何从前台传递到后面,然后实现要进行的操作,那么,操作完成之后,变化的呈现是从后向前倒回去的,事物的改变导致场景的改变,而观察场景的view就回呈现出不同的结果,要使view能够实时观察到变化,就是不停地刷新update,这样一个实时交互的场景就呈现出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值