graphics view提供了一个平台用于大量自定义 2d 图元的管理与交互框架包括一个事件传播架构支持场景 scene 中的图元 item 进行精确的双精度交互功能。item 可以处理键盘事件、鼠标按下、移动、释放和双击事件同时也能跟踪鼠标移动。
和 google 地图一样在管理大量 item 的时候通常需要 view 具有交互平移/缩放/旋转功能。
<a href="#%e7%ae%80%e8%bf%b0">简述</a>
<a href="#%e4%ba%a4%e4%ba%92%e5%bc%8f-qgraphicsview">交互式 qgraphicsview</a>
<a href="#%e6%95%88%e6%9e%9c">效果</a>
<a href="#%e6%ba%90%e7%a0%81">源码</a>
便于以后复用实现一个交互式 qgraphicsview - interactiveview。
主要功能包括
平移
方式一鼠标左键按下然后移动
方式二按下上/下/左/右键分别向各个方向移动
缩放
方式一鼠标滚轮向上滚动放大向下滚动缩小
方式二按加号键带 shift进行放大按减号键缩小
旋转按空格键逆时针旋转回车键顺时针旋转
interactive_view.h
平移速度默认为 1.0可以使用 settranslatespeed() 来改变。缩放的增量大小也可以使用 setzoomdelta() 改变。
interactive_view.cpp
这里主要重写了键盘及鼠标事件具体说明请参考注释