In a QGIS python plugin. I like to change value selected cell in qtablewidget to the typed value. Something like screenshot below.
But in changeattributevalue function. While column(second value) and string(third value) is really easy to get. I really can't find a way to get "QgsFeatureId"(first value) with row and columns of qtablewidget.
If I do something like below. It will always change wrong row.
layer.changeAttributeValue(long(table.selectedIndexes()[0].row()), table.selectedIndexes()[0].column(), changestring.text())
I tried to use QgsFeatureRequest() with unique column field, but I really don't know how to use this function with variables and scanning whole table seems ununnecessary.
(ex: request = QgsFeatureRequest().setFilterExpression( u' header[table.selectedIndexes()[0].column()] = table_data[0][table.selectedIndexes()[0].row()]' )
)
Is there any way to get QgsFeatureId based on row number?
Best Answer
You need to save the feature ID when constructing
QTableWidgetItem
objects.Qt gives you a handy method to store any data you need into a
QTableWidgetItem
(besides the displayed value).Once you have the selected item, you can retrieve such data in this way: