现在的位置: 首页 > 综合 > 正文

Qt鹰眼

2018年04月30日 ⁄ 综合 ⁄ 共 638字 ⁄ 字号 评论关闭

最近使用Qt的图形视图功能,设计了一个简单的地图鹰眼,功能主要分为三个方面:

1.鹰眼图中的矩形框对应QgraphicsView当前视口上的图形,这是鹰眼的基本原则。

鹰眼视图直接采用地图图片实现即可,重载Qwidget的paintEvent事件,根据当前视口显示的Rect以及鹰眼和主视图之间的比例关系,换算得出矩形框的大小和位置,直接画矩形即可。

2.主视图的缩放、移动、拖拽,鹰眼矩形框也要跟着移动。

重载QgraphicsView的paintEvent事件,每次视图刷新时,获取当前视口的位置,并通过坐标系转换,得出在场景中的逻辑坐标,并发送信号事件,通知鹰眼视图改变其矩形框。 

QRectF Rect=this->mapToScene(this->viewport()->rect()).boundingRect();

emit viewChanged(rect);

3.鹰眼图框移动时,主视图的视口也要跟着移动。

重载鹰眼视图的鼠标释放事件,获取当前矩形框的位置大小,并根据鹰眼和主视图之间的比例关系,转换得出对应视口的位置和大小,并发送信号,通知主视图移动视口。

主视图移动视口有两种方法,一种是通过QgraphicsView的centerOn()事件,使视口的中心和鹰眼图对应的中心重合,即可调整视口;第二种是通过setSceneRect,直接调整显示在视口的场景矩形,但是这样会导致当前滑动条消失,因为窗口默认当前放大倍数为1.不会出现滑动条,容易导致视图显示与前期显示不一致。

抱歉!评论已关闭.