QgsCategorizedSymbolRenderer 分类渲染器
QGIS矢量图层可以根据指定字段,渲染不同颜色:
//字段索引
int fieldIdx = pLayer->fields().indexOf("Type");
//该字段对应的所有属性值
QSet<QVariant> set = pLayer->uniqueValues(fieldIdx);
QVariantList list = set.toList();
//不同值渲染不同色
QgsCategoryList cats = QgsCateforizedSymbolRenderer::createCategories(list, QgsSymbol::defaultSymbol(pLayer->geometryType()), pLayer, "Type");
for(auto iter=cats.begin(); iter!=cats.end(); ++iter)
{
//iter->symbol()->setColor(yourColor);
QgsSimpleMarkerSymbolLayer* symLayer = new QgsSimpleMarkerSymbolLayer( QgsSimpleMarkerSymbolLayerBase::Shape::Square );
symLayer->setSize( 1 );
symLayer->setFillColor( Qt::white );
symLayer->setStrokeColor( Qt::red );
iter->symbol->changeSymbolLayer( 0, symLayer );
}
//初始化渲染器,并赋给图层 std::unique_ptr<QgsCategorizedSymbolRenderer> renderer = qgis::make_unique<QgsCategorizedSymbolRenderer>("Type", cats);
pLayer->setRenderer(renderer->clone());
转载链接:qgis二次开发矢量图层根据指定字段绘制类别_kingcrab0710的博客-CSDN博客_qgis二次开发绘图