C++实现点击QgsLayerTreeView中的节点,返回节点属性
时间: 2024-03-27 17:39:44 浏览: 156
您好,根据您的问题,我可以给出以下伪代码来实现您的需求:
```c++
// 获取当前选中的节点
QModelIndexList selectedIndexes = QgsProject.instance().layerTreeRoot()->view()->selectedIndexes();
// 判断是否选中了一个节点
if (selectedIndexes.length() == 1)
{
// 获取选中的节点
QModelIndex selectedIndex = selectedIndexes.first();
// 获取节点对应的图层
QgsLayerTreeNode* layerNode = QgsProject.instance().layerTreeRoot()->findLayer(selectedIndex);
// 判断节点是否是图层节点
if (layerNode && layerNode->type() == QgsLayerTreeNode::LayerNode)
{
// 获取图层
QgsLayerTreeLayer* layerTreeLayer = dynamic_cast<QgsLayerTreeLayer*>(layerNode);
QgsMapLayer* layer = layerTreeLayer->layer();
// 获取图层的属性
QgsFields fields = layer->fields();
QgsFeature feature = layer->getFeature(selectedIndex.row());
// 输出属性
for (int i = 0; i < fields.count(); i++)
{
QString fieldName = fields.at(i).name();
QVariant fieldValue = feature.attribute(i);
qDebug() << fieldName << ":" << fieldValue.toString();
}
}
}
```
以上代码实现了获取选中节点的图层属性。您可以根据您的实际需求进行修改和调整。
阅读全文