目前我有 QgsVectorLayer* mVectorLayer; 这样一个图层对象,没有任何的属性字段,现在需要设置一个名为NAME的属性字段,并且要向其中添加一个QgsFeature 对象,该对象也要设置“NAME”的属性字段,属性值为“123”,请为我写出C++示例代码
时间: 2024-04-08 13:31:25 浏览: 48
当然,下面是一个示例的C++代码,用于在QGIS的图层中添加名为"NAME"的属性字段,并将一个带有"NAME"属性值为"123"的QgsFeature对象添加到图层中:
```cpp
#include <qgsvectorlayer.h>
#include <qgsfield.h>
#include <qgsfeature.h>
// 创建属性字段和特征对象,并将特征对象添加到图层中
void addFeatureWithAttribute(QgsVectorLayer* vectorLayer)
{
// 添加名为"NAME"的属性字段
QgsField fieldName("NAME", QVariant::String);
vectorLayer->addAttribute(fieldName);
// 创建特征对象,并设置属性值为"123"
QgsFeature feature;
feature.setFields(vectorLayer->fields());
feature.setAttribute("NAME", "123");
// 将特征对象添加到图层中
vectorLayer->dataProvider()->addFeatures(QList<QgsFeature>() << feature);
}
int main()
{
// 创建图层对象
QgsVectorLayer* mVectorLayer = new QgsVectorLayer("Point", "MyLayer", "memory");
// 检查图层是否已成功创建
if (!mVectorLayer)
{
// 图层创建失败,处理错误
return 1;
}
// 打开编辑模式以添加属性字段和特征对象
mVectorLayer->startEditing();
// 添加属性字段和特征对象
addFeatureWithAttribute(mVectorLayer);
// 保存编辑结果并退出编辑模式
mVectorLayer->commitChanges();
// 清理资源
delete mVectorLayer;
return 0;
}
```
这段示例代码创建了一个名为"NAME"的属性字段,并向图层中添加了一个带有"NAME"属性值为"123"的特征对象。请注意,这只是一个简单的示例,您可能需要根据您的实际需求进行适当的修改和扩展。
阅读全文