【Qgis二次开发】在QgsVectorLayer下添加要素
最初的需求是在Qgis中,在QgsVectorLayer中的点下显示与之对应的影像。影像实现控制旋转、放大和缩小的功能(无需选中)。这里记录一下问题解决的过程。
尝试使用QgsMapItem绘制要素
最初的想法是使用QgsMapItem(继承于QGraphicsItem)添加到QgsMapCanvas中,然后设置其z-Value让他显示在Layer的下面,但是遇到了一些问题。
测试过程中发现:z值大于-10时,要素一直显示在layer之上;z值小于-10时,要素不见了,只有在mapcanvas刷新时闪烁一下。
这里把mapcanvas中的QGraphicsItem都拿出来看他们的z值显示如下(从items()中取出QGraphicsItem对象是按z值从大到小排序的):
这意味着图中值为-10的z值即为layer所在的QGraphicsItem,且该QGraphicsItem有一个背景色把视图区域都覆盖了。无奈,若不能去掉该背景颜色那就只能寻求其他的方法了。
尝试使用QgsVectorLayer图层属性中的符号化(symbol)绘制要素
在Qgis 3.6以上的版本中对应point数据的QgsVectorLayer图层可添加RasterImage的symbol(先