/** * Returns a copy of the user-selected features. * * \warning Calling this method triggers a request for all attributes and geometry for the selected features. * Consider using the much more efficient selectedFeatureIds() or selectedFeatureCount() if you do not * require access to the feature attributes or geometry. * * \returns A list of QgsFeature * * \see selectedFeatureIds() * \see getSelectedFeatures() which is more memory friendly when handling large selections */ Q_INVOKABLE QgsFeatureList selectedFeatures() const;
时间: 2024-04-12 17:32:54 浏览: 365
`selectedFeatures()`是一个可调用的函数,用于返回用户选择的要素的副本。
该函数会触发对所选要素的所有属性和几何图形的请求,因此请注意,在不需要访问要素属性或几何图形时,考虑使用更高效的`selectedFeatureIds()`或`selectedFeatureCount()`。
该函数返回一个`QgsFeatureList`类型的列表,其中包含用户选择的要素的副本。
以下是一个使用示例,演示如何使用`selectedFeatures()`函数获取所选要素列表:
```cpp
QgsVectorLayer* vectorLayer = /* 获取对应的QgsVectorLayer对象 */;
// 获取选择模型
QItemSelectionModel* selectionModel = vectorLayer->selectionModel();
// 获取选择的索引列表
QModelIndexList selectedIndexes = selectionModel->selectedIndexes();
// 创建一个保存所选要素的列表
QgsFeatureList selectedFeatures;
// 遍历选择的索引列表,并将对应的要素添加到所选要素列表中
for (const QModelIndex& index : selectedIndexes) {
QgsFeature feature = vectorLayer->getFeature(index.row());
selectedFeatures.append(feature);
}
// 打印所选要素的属性值
for (const QgsFeature& feature : selectedFeatures) {
qDebug() << "Selected feature attributes:" << feature.attributes();
}
```
在上述示例中,我们首先获取了目标`QgsVectorLayer`对象,并使用`vectorLayer->selectionModel()`获取与该图层关联的选择模型。然后,我们使用`selectedIndexes()`获取选择的索引列表。
接下来,我们创建了一个`QgsFeatureList`类型的列表`selectedFeatures`来保存所选要素。通过遍历选择的索引列表,并使用`vectorLayer->getFeature()`函数获取每个索引对应的要素,将这些要素添加到`selectedFeatures`列表中。
最后,我们通过遍历`selectedFeatures`列表,打印每个所选要素的属性值。
请注意,上述示例中的`vectorLayer`是指您使用的具体的`QgsVectorLayer`对象,您需要根据实际情况进行替换。
阅读全文