QGIS设置图层显隐,代码如下:
void setLayerVisiable(bool visible, const QString &layerName){
QgsLayerTree *tree = QgsProject::instance()->layerTreeRoot();
QList<QgsLayerTreeLayer *> layers = tree->findLayers();
for (int i = 0; i < layers.size(); ++i) {
QgsLayerTreeLayer *layer = layers[i];
if (layer->name() == layerName) {
layer->setItemVisibilityChecked(visible);
setLayers(tree->checkedLayers());
break;
}
}
}
QGIS调整图层顺序(图层上移),代码如下:
void moveLayerUp(const QString &layerName){
QgsLayerTree *tree = QgsProject::instance()->layerTreeRoot();
QList<QgsLayerTreeLayer *> layers = tree->findLayers();
if (layers.length() < 2) { return; }
if (layers[0]->name() == layerName) { return; }
for (int i = 1; i < layers.size(); ++i){
QgsLayerTreeLayer *node = layers[i];
if (node->name() == layerName){
QgsLayerTreeNode *clonedNode = node->clone();
tree->insertChildNode(i - 1, clonedNode);
tree->removeChildNode(node);
setLayers(tree->checkedLayers());
break;
}
}
}