diff --git a/python/PyQt6/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in b/python/PyQt6/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in index 26be10afb56..a39e43cdcbd 100644 --- a/python/PyQt6/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in +++ b/python/PyQt6/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in @@ -160,6 +160,12 @@ Constructor of the wrapper for a given ``setting`` and its widget %Docstring Constructor of the wrapper for a given ``setting`` and its widget ``editor`` +%End + + QgsSettingsStringComboBoxWrapper( QWidget *editor, const QgsSettingsEntryBase *setting, Mode mode, int role, const QStringList &dynamicKeyPartList = QStringList() ); +%Docstring +Constructor of the wrapper for a given ``setting`` and its widget +``editor`` %End virtual QgsSettingsEditorWidgetWrapper *createWrapper( QObject *parent = 0 ) const; diff --git a/python/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in b/python/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in index 28a5493d898..e116953e242 100644 --- a/python/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in +++ b/python/gui/auto_generated/settings/qgssettingseditorwidgetwrapperimpl.sip.in @@ -160,6 +160,12 @@ Constructor of the wrapper for a given ``setting`` and its widget %Docstring Constructor of the wrapper for a given ``setting`` and its widget ``editor`` +%End + + QgsSettingsStringComboBoxWrapper( QWidget *editor, const QgsSettingsEntryBase *setting, Mode mode, int role, const QStringList &dynamicKeyPartList = QStringList() ); +%Docstring +Constructor of the wrapper for a given ``setting`` and its widget +``editor`` %End virtual QgsSettingsEditorWidgetWrapper *createWrapper( QObject *parent = 0 ) const; diff --git a/src/gui/settings/qgssettingseditorwidgetwrapperimpl.cpp b/src/gui/settings/qgssettingseditorwidgetwrapperimpl.cpp index 6daee9a3379..ba1bccce412 100644 --- a/src/gui/settings/qgssettingseditorwidgetwrapperimpl.cpp +++ b/src/gui/settings/qgssettingseditorwidgetwrapperimpl.cpp @@ -94,7 +94,7 @@ bool QgsSettingsStringComboBoxWrapper::setWidgetValue( const QString &value ) co { if ( mEditor ) { - int idx = mMode == Mode::Data ? mEditor->findData( value ) : mEditor->findText( value ); + int idx = mMode == Mode::Data ? mEditor->findData( value, mDataRole ) : mEditor->findText( value ); if ( idx >= 0 ) { mEditor->setCurrentIndex( idx ); @@ -140,7 +140,7 @@ QString QgsSettingsStringComboBoxWrapper::valueFromWidget() const { if ( mEditor ) { - return mMode == Mode::Data ? mEditor->currentData().toString() : mEditor->currentText(); + return mMode == Mode::Data ? mEditor->currentData( mDataRole ).toString() : mEditor->currentText(); } else { diff --git a/src/gui/settings/qgssettingseditorwidgetwrapperimpl.h b/src/gui/settings/qgssettingseditorwidgetwrapperimpl.h index f73824f6fa4..c827445c10a 100644 --- a/src/gui/settings/qgssettingseditorwidgetwrapperimpl.h +++ b/src/gui/settings/qgssettingseditorwidgetwrapperimpl.h @@ -178,6 +178,10 @@ class GUI_EXPORT QgsSettingsStringComboBoxWrapper : public QgsSettingsEditorWidg QgsSettingsStringComboBoxWrapper( QWidget *editor, const QgsSettingsEntryBase *setting, Mode mode, const QStringList &dynamicKeyPartList = QStringList() ) : QgsSettingsEditorWidgetWrapperTemplate( editor ), mMode( mode ) { configureEditor( editor, setting, dynamicKeyPartList ); } + //! Constructor of the wrapper for a given \a setting and its widget \a editor + QgsSettingsStringComboBoxWrapper( QWidget *editor, const QgsSettingsEntryBase *setting, Mode mode, int role, const QStringList &dynamicKeyPartList = QStringList() ) + : QgsSettingsEditorWidgetWrapperTemplate( editor ), mMode( mode ), mDataRole( role ) { configureEditor( editor, setting, dynamicKeyPartList ); } + QgsSettingsEditorWidgetWrapper *createWrapper( QObject *parent = nullptr ) const override { return new QgsSettingsStringComboBoxWrapper( parent ); } QString id() const override; @@ -192,6 +196,7 @@ class GUI_EXPORT QgsSettingsStringComboBoxWrapper : public QgsSettingsEditorWidg private: Mode mMode = Mode::Text; + int mDataRole = Qt::UserRole; // Default to UserRole, can be changed in the constructor };