diff options
-rw-r--r-- | src/corelib/io/qsettings.cpp | 20 | ||||
-rw-r--r-- | src/corelib/io/qsettings.h | 3 | ||||
-rw-r--r-- | src/corelib/io/qsettings_p.h | 1 |
3 files changed, 22 insertions, 2 deletions
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 1d6f2dc912..34f07096eb 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -3254,6 +3254,9 @@ bool QSettings::event(QEvent *event) #endif /*! + \fn QSettings::value(const QString &key) const + \fn QSettings::value(const QString &key, const QVariant &defaultValue) const + Returns the value for setting \a key. If the setting doesn't exist, returns \a defaultValue. @@ -3271,14 +3274,29 @@ bool QSettings::event(QEvent *event) \sa setValue(), contains(), remove() */ +QVariant QSettings::value(const QString &key) const +{ + Q_D(const QSettings); + return d->value(key, nullptr); +} + QVariant QSettings::value(const QString &key, const QVariant &defaultValue) const { Q_D(const QSettings); + return d->value(key, &defaultValue); +} + +QVariant QSettingsPrivate::value(const QString &key, const QVariant *defaultValue) const +{ if (key.isEmpty()) { qWarning("QSettings::value: Empty key passed"); return QVariant(); } - return d->get(d->actualKey(key)).value_or(defaultValue); + if (std::optional r = get(actualKey(key))) + return std::move(*r); + if (defaultValue) + return *defaultValue; + return QVariant(); } /*! diff --git a/src/corelib/io/qsettings.h b/src/corelib/io/qsettings.h index 05b30b562b..42b2527f0b 100644 --- a/src/corelib/io/qsettings.h +++ b/src/corelib/io/qsettings.h @@ -163,7 +163,8 @@ public: bool isWritable() const; void setValue(const QString &key, const QVariant &value); - QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; + QVariant value(const QString &key, const QVariant &defaultValue) const; + QVariant value(const QString &key) const; void remove(const QString &key); bool contains(const QString &key) const; diff --git a/src/corelib/io/qsettings_p.h b/src/corelib/io/qsettings_p.h index ddcbe0f76c..4849975f2a 100644 --- a/src/corelib/io/qsettings_p.h +++ b/src/corelib/io/qsettings_p.h @@ -208,6 +208,7 @@ public: virtual bool isWritable() const = 0; virtual QString fileName() const = 0; + QVariant value(const QString &key, const QVariant *defaultValue) const; QString actualKey(const QString &key) const; void beginGroupOrArray(const QSettingsGroup &group); void setStatus(QSettings::Status status) const; |