網上資料很少,參考了一個文章,确實管用,見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源碼的話,也能找到真正實作圖層顯隐的方法,但那樣比較麻煩,源碼又多。