天天看点

QGis二次开发(Qt):如何控制图层显示和隐藏

        网上资料很少,参考了一个文章,确实管用,见https://blog.csdn.net/IamChen/article/details/127740561,不过需要注意的是,使用文章中的方法,通过QgsLayerTreeView进行图层显隐控制有一个前提,就是在添加图层的时候,需要调用QgsProject的addMapLayer方法,不然treeview的model数据源是空的,就没法进行显隐的控制,图层添加到qgis工程的代码如下:

if (!QgsProject::instance()->mapLayer(vLayer->id())) {
        QgsProject::instance()->addMapLayer(vLayer);
    }
           

        这里吐槽一下,Arcgis中控制图层就很方便,layer有setVisible这样的函数,很方便,qgis很多功能都是捆绑控件的,剥离出来很麻烦。当然,可能深入研究QGis源码的话,也能找到真正实现图层显隐的方法,但那样比较麻烦,源码又多。

继续阅读