Qt鹰眼

最近使用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.不会出现滑动条,容易导致视图显示与前期显示不一致。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值