天天看点

交互式QGraphicsView(平移/缩放/旋转)简述交互式 QGraphicsView

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进行放大按减号键缩小

旋转按空格键逆时针旋转回车键顺时针旋转

交互式QGraphicsView(平移/缩放/旋转)简述交互式 QGraphicsView

interactive_view.h

平移速度默认为 1.0可以使用 settranslatespeed() 来改变。缩放的增量大小也可以使用 setzoomdelta() 改变。

interactive_view.cpp

这里主要重写了键盘及鼠标事件具体说明请参考注释

继续阅读