QGis二次开发基础 -- 销毁当前地图工具

本文介绍了如何在QGIS中将当前地图工具移除,恢复到初始的无地图工具状态。通常使用unsetMapTool()方法可以实现这一功能,先获取当前地图工具,然后调用unsetMapTool(),不设置新的工具。
摘要由CSDN通过智能技术生成

本文注定很短。


由某位朋友需求,在设置了地图控件之后,怎么才能将当前的地图工具释放掉,返回原来的空地图状态。比如刚刚打开程序的时候,鼠标指针是一个箭头,表示没有地图工具,也不能在地图上直接操作。而点选某个地图工具后(例如漫游工具,鼠标指针会变成一个小手),现在想释放掉这个设置的地图工具。
这个需求我之前没有想到过,大多数时候我都是直接选择漫游工具来释放其他的地图工具。而看到这个需求我的一反应就是将 mapTool 设置为 null 就行了。但是那个朋友实验之后反馈给我说不行。于是我自己打开工程,简单拨弄了几下。

原来 QgsMapCanvas 自带的 mapTool 在初始化时,并不是null,而是没有值。

这里写图片描述

而当点选了某个工具之后,这个指针才会被创建并附上相应的值。

这里写图片描述

使用 NULL 去替换这个 mapTool 指针是不行的,因为如果不是合法的 QgsMapTool 对象,QGis会将这次替换动作忽略掉。

(截图来自 QGis 源码 qgsmapcanvas.cpp 文件)
这里写图片描述

那是不是就没办法切换回原来的无地图工具状态呢?

也不是的,QgsMapCanvas 对象提

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值