我为图层上的功能删除事件设置了信号:
self.layer.featureDeleted.connect(self.feature_deleted)
当我尝试从插槽上已删除的功能中获取属性时,会引发StopIteration错误(即,它无法检索该功能)。
我以为在提交对图层的更改之前,我仍然应该能够从已删除的要素中检索属性?否则,我看不到fid参数的用途。
def feature_deleted(self, fid):
feature = self.layer.getFeatures(QgsFeatureRequest().setFilterFid(int(fid))).next()
idx = self.layer.fieldNameIndex('my_attribute')
print feature.attributes()[idx]
我如何访问已删除要素的属性(在提交对图层的更改之前)?
1
似乎已删除的要素不会存储在任何地方……除了在图层的原始版本中……所以……也许打开它两次,然后使用您要修改的图层的编辑缓冲区返回的DeletedFeatureIds?我只发现存储了属性值更改或几何更改...没有删除的要素(只有它们的featureIds ...)
—
snaileater
@snaileater复制图层对于我而言是一项昂贵的操作。我将尝试记录所选要素的属性,并将其与更改提交后剩下的属性进行比较。
—
马特
@Matt也许此邮件列表上的帖子会有所帮助:lists.osgeo.org/pipermail/qgis-developer/2015-May/037823.html
—
eftas '16