QGIS二次开发属性识别窗口

最近因为项目需要,用QGIS二次开发做一个矢量图层的属性识别窗口,最终是仿照QGIS的属性识别框。在这里记录一下过程防止遗忘。
先看一下需要用到的类
在这里插入图片描述
QgsMapToolIdentify:图层特征识别工具,矢量层显示搜索半径内的特性属性(允许编辑矢量层处于编辑模式时的值),这个类就是我们要用的类
这个类重写了鼠标事件:
在这里插入图片描述
我们发现他并没有实现,所以我们接下来就是要自己写一个类重新实现鼠标事件
在这里插入图片描述
这个类继承了QgsMapToolIdentify,重新实现鼠标事件
在这里插入图片描述
qgisgeometry就是鼠标点击的一个区域

我们在看QgsMapToolIdentify中一个重要函数
在这里插入图片描述
这个函数就是我们要将鼠标点击的区域传进去,他会返回一个QLIST的容器我们识别的结果都放在里面
在这里插入图片描述
这里就将识别结果都保存在了results中,我们来看一下identifyresult的结构
在这里插入图片描述我这里重新写了一个界面显示类,把结构体的值传过来
在这里插入图片描述
resultsdialog是界面类的对象
在这里插入图片描述
接下来我们就可以取值显示自己需要显示的内容
比如 vlayer->name()是图层名字
f.id()是弧段编号
f.attributes()是弧段名字
具体的大家可以去QgsFeature的源码去找自己需要的显示出来;
这里还要说一下QMap<QString, QString>& derivedAttributes它保存了各种衍生信息类似于QGISApp的属性显示框
在这里插入图片描述
我这里用qdebug打印了一下大家可以根据需要自己设计ui显示
在这里插入图片描述
打印结果如下
在这里插入图片描述
最后想说一下第一次写可能有错误和不清楚的地方,请大家原谅,也希望大家留言交流。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值