网上资料很少,参考了一个文章,确实管用,见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源码的话,也能找到真正实现图层显隐的方法,但那样比较麻烦,源码又多。

文章介绍了在QGIS中如何通过QgsLayerTreeView进行图层的显隐控制,强调在添加图层时必须使用QgsProject的addMapLayer方法,否则无法进行控制。同时,作者提到了ArcGIS中layer.setVisible函数的便利性,认为QGIS的相关功能实现相对复杂,需要深入源码研究。
7756

被折叠的 条评论
为什么被折叠?



