@@ -8338,7 +8338,7 @@ void QgisApp::saveStyleFile( QgsMapLayer *layer )
8338
8338
class QgisAppFieldValueConverter : public QgsVectorFileWriter::FieldValueConverter
8339
8339
{
8340
8340
public:
8341
- QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues );
8341
+ QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues, const QStringList &attributesExportNames );
8342
8342
8343
8343
QgsField fieldDefinition( const QgsField &field ) override;
8344
8344
@@ -8349,11 +8349,14 @@ class QgisAppFieldValueConverter : public QgsVectorFileWriter::FieldValueConvert
8349
8349
private:
8350
8350
QPointer< QgsVectorLayer > mLayer;
8351
8351
QgsAttributeList mAttributesAsDisplayedValues;
8352
+ QStringList mAttributesExportNames;
8352
8353
};
8353
8354
8354
- QgisAppFieldValueConverter::QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues )
8355
+ QgisAppFieldValueConverter::QgisAppFieldValueConverter( QgsVectorLayer *vl, const QgsAttributeList &attributesAsDisplayedValues, const QStringList &attributesExportNames )
8355
8356
: mLayer( vl )
8356
8357
, mAttributesAsDisplayedValues( attributesAsDisplayedValues )
8358
+ , mAttributesExportNames( attributesExportNames )
8359
+
8357
8360
{
8358
8361
}
8359
8362
@@ -8363,6 +8366,12 @@ QgsField QgisAppFieldValueConverter::fieldDefinition( const QgsField &field )
8363
8366
return field;
8364
8367
8365
8368
int idx = mLayer->fields().indexFromName( field.name() );
8369
+ // If not found in the original field name, it might be in the export names
8370
+ if ( idx == -1 )
8371
+ {
8372
+ idx = mAttributesExportNames.indexOf( field.name() );
8373
+ }
8374
+
8366
8375
if ( mAttributesAsDisplayedValues.contains( idx ) )
8367
8376
{
8368
8377
return QgsField( field.name(), QVariant::String );
@@ -8476,7 +8485,7 @@ QString QgisApp::saveAsVectorFileGeneral( QgsVectorLayer *vlayer, bool symbology
8476
8485
}
8477
8486
8478
8487
QgsRectangle filterExtent = dialog->filterExtent();
8479
- QgisAppFieldValueConverter converter( vlayer, dialog->attributesAsDisplayedValues() );
8488
+ QgisAppFieldValueConverter converter( vlayer, dialog->attributesAsDisplayedValues(), dialog->attributesExportNames() );
8480
8489
QgisAppFieldValueConverter *converterPtr = nullptr;
8481
8490
// No need to use the converter if there is nothing to convert
8482
8491
if ( !dialog->attributesAsDisplayedValues().isEmpty() )
0 commit comments