QGIS二次开发06:图层显示控制

图层显示控制是gis中比较普通的功能,一般是作为图层的一个办法实现,但在qgis中就没这么简单,至少我在QgsMapLayer类中没发现。

在QGIS通过QgsLayerTreeView的setLayerVisible可以实现显示控制,通过实现源码可以看出其实是通过图层树checkbox的控制实现的,感觉真的有点low。实现源码如下:

void QgsLayerTreeView::setLayerVisible( QgsMapLayer *layer, bool visible )
{
  if ( !layer )
    return;
  QgsLayerTreeLayer *nodeLayer = layerTreeModel()->rootGroup()->findLayer( layer->id() );
  if ( !nodeLayer )
    return;
  nodeLayer->setItemVisibilityChecked( visible );
}

思路:

1、实例化QgsLayerTreeView,并作为成员变量

2、调用QgsLayerTreeView的setLayerVisible

具体看代码

mLayerTree = new QgsLayerTreeView(nullptr);    //实例化的QgsLayerTreeView
mLayerTree->setObjectName(QStringLiteral("LayerControl"));
//创建QgsLayerTreeModel 实例,并允许用户通过点选复选框手动隐藏/显示图层
QgsLayerTreeModel* model = new QgsLayerTreeModel(QgsProject::instance()->layerTreeRoot(), this);
model->setFlag(QgsLayerTreeModel::AllowNodeChangeVisibility);
model->setAutoCollapseLegendNodes(10);
//将View视图与Model数据绑定
mLayerTree->setModel(model);
//将工程实例中的图层根节点与画布绑定,实现与地图画布控件的数据交互
mLayerTreeBridge = new QgsLayerTreeMapCanvasBridge(QgsProject::instance()->layerTreeRoot(), mMapCanvas, this);

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值