昨天在程序里添加了编辑矢量图层符号的功能,右键LayerTree的矢量图层,选择“Edit Symbol”,便可以选择或编辑图层的渲染符号。
实现方法很简单,首先参照http://blog.csdn.net/deirjie/article/details/50428179,实现自定义的右键菜单类,具体代码可参考源码中的QgsAppLayerTreeViewMenuProvider类。源码里有一个editVectorSymbol()方法,原封不动地copy到自己的代码里就行了。
1 voidQgsAppLayerTreeViewMenuProvider::editVectorSymbol()2 {3 QAction* action = qobject_cast< QAction*>( sender() );4 if ( !action )5 return;6
7 QString layerId = action->property( "layerId").toString();8 QgsVectorLayer* layer = dynamic_cast( QgsMapLayerRegistry::instance()->mapLayer( layerId ) );9 if ( !layer )10 return;11
12 QgsSingleSymbolRendererV2* singleRenderer = dynamic_cast< QgsSingleSymbolRendererV2* >( layer->rendererV2()