Add QSettings(Scope...) constructor to QSettings
Because of the system specific folder/filenames (organization name vs domain) it was not possible to explicitly access the settings with SystemScope without using #ifdef, as it is done by Qt internally. The new constructor uses the default name while creating an instance with a scope. [ChangeLog][QtCore][QSettings] Added QSettings(Scope...) constructor to avoid using #ifdef in Qt applications. Change-Id: I81016430a1d18a382bfdd1e1cf32de367f98d7aa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>bb10
parent
c340b0b279
commit
229b363c85
|
|
@ -64,8 +64,8 @@
|
|||
#include "qrect.h"
|
||||
#endif // !QT_NO_GEOM_VARIANT
|
||||
|
||||
#ifndef QT_NO_QOBJECT
|
||||
#include "qcoreapplication.h"
|
||||
#ifndef QT_BUILD_QMAKE
|
||||
# include "qcoreapplication.h"
|
||||
#endif
|
||||
|
||||
#ifndef QT_BOOTSTRAPPED
|
||||
|
|
@ -2660,9 +2660,10 @@ QSettings::QSettings(const QString &fileName, Format format, QObject *parent)
|
|||
called, the QSettings object will not be able to read or write
|
||||
any settings, and status() will return AccessError.
|
||||
|
||||
On \macos and iOS, if both a name and an Internet domain are specified
|
||||
for the organization, the domain is preferred over the name. On
|
||||
other platforms, the name is preferred over the domain.
|
||||
You should supply both the domain (used by default on \macos and iOS) and
|
||||
the name (used by default elsewhere), although the code will cope if you
|
||||
supply only one, which will then be used (on all platforms), at odds with
|
||||
the usual naming of the file on platforms for which it isn't the default.
|
||||
|
||||
\sa QCoreApplication::setOrganizationName(),
|
||||
QCoreApplication::setOrganizationDomain(),
|
||||
|
|
@ -2670,7 +2671,20 @@ QSettings::QSettings(const QString &fileName, Format format, QObject *parent)
|
|||
setDefaultFormat()
|
||||
*/
|
||||
QSettings::QSettings(QObject *parent)
|
||||
: QObject(*QSettingsPrivate::create(globalDefaultFormat, UserScope,
|
||||
: QSettings(UserScope, parent)
|
||||
{
|
||||
}
|
||||
|
||||
/*!
|
||||
\since 5.13
|
||||
|
||||
Constructs a QSettings object in the same way as
|
||||
QSettings(QObject *parent) but with the given \a scope.
|
||||
|
||||
\sa QSettings(QObject *parent)
|
||||
*/
|
||||
QSettings::QSettings(Scope scope, QObject *parent)
|
||||
: QObject(*QSettingsPrivate::create(globalDefaultFormat, scope,
|
||||
#ifdef Q_OS_MAC
|
||||
QCoreApplication::organizationDomain().isEmpty()
|
||||
? QCoreApplication::organizationName()
|
||||
|
|
@ -2710,6 +2724,25 @@ QSettings::QSettings(const QString &fileName, Format format)
|
|||
{
|
||||
d_ptr->q_ptr = this;
|
||||
}
|
||||
|
||||
# ifndef QT_BUILD_QMAKE
|
||||
QSettings::QSettings(Scope scope)
|
||||
: d_ptr(QSettingsPrivate::create(globalDefaultFormat, scope,
|
||||
# ifdef Q_OS_DARWIN
|
||||
QCoreApplication::organizationDomain().isEmpty()
|
||||
? QCoreApplication::organizationName()
|
||||
: QCoreApplication::organizationDomain()
|
||||
# else
|
||||
QCoreApplication::organizationName().isEmpty()
|
||||
? QCoreApplication::organizationDomain()
|
||||
: QCoreApplication::organizationName()
|
||||
# endif
|
||||
, QCoreApplication::applicationName())
|
||||
)
|
||||
{
|
||||
d_ptr->q_ptr = this;
|
||||
}
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -132,6 +132,7 @@ public:
|
|||
const QString &application = QString(), QObject *parent = nullptr);
|
||||
QSettings(const QString &fileName, Format format, QObject *parent = nullptr);
|
||||
explicit QSettings(QObject *parent = nullptr);
|
||||
explicit QSettings(Scope scope, QObject *parent = nullptr);
|
||||
#else
|
||||
explicit QSettings(const QString &organization,
|
||||
const QString &application = QString());
|
||||
|
|
@ -140,6 +141,9 @@ public:
|
|||
QSettings(Format format, Scope scope, const QString &organization,
|
||||
const QString &application = QString());
|
||||
QSettings(const QString &fileName, Format format);
|
||||
# ifndef QT_BUILD_QMAKE
|
||||
explicit QSettings(Scope scope = UserScope);
|
||||
# endif
|
||||
#endif
|
||||
~QSettings();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue