Question

J'essaie de définir le chemin pour stocker des paramètres personnalisés pour mon application à l'aide de Qsettings :: SetPath et Defaulformat, mais les deux semblent être ignorés lorsque j'essaie d'utiliser le fichier de paramètres.

>>> QSettings.setDefaultFormat(QSettings.IniFormat)
>>> QSettings.setPath(QSettings.IniFormat, QSettings.UserScope, "C:\\")
>>> settings3 = QSettings("Balh", "MyApp")
>>> settings3.fileName()
PyQt4.QtCore.QString(u'\\HKEY_CURRENT_USER\\Software\\Balh\\MyApp')

J'aimerais rester à l'aide de settings = QSettings() si je peux sans avoir à fournir QSettings::IniFormat, car il s'agit d'une application de plate-forme croix et doit utiliser le format natif si le chemin personnalisé n'est pas défini.

Était-ce utile?

La solution

La documentation QSettings suggère trompeusement que le code

QSettings settings("Moose Soft", "Facturo-Pro");

équivalent à

QCoreApplication::setOrganizationName("Moose Soft");
QCoreApplication::setApplicationName("Facturo-Pro");
QSettings settings;

Mais ce n'est pas vrai.Essayez ceci

from PySide import QtCore
QtCore.QSettings.setDefaultFormat(QtCore.QSettings.IniFormat)

settings = QtCore.QSettings("Moose Soft", "Facturo-Pro")
print settings.format()

QtCore.QCoreApplication.setOrganizationName("MooseSoft")
QtCore.QCoreApplication.setApplicationName("Facturo-Pro")
settings = QtCore.QSettings()
print settings.format()

Et vous verrez que seul le deuxième constructeur utilise le format par défaut.Et si vous regardez la documentation du constructeur QSettings, vous verrez cette confirmation:

Exemple:

QSettings settings("Moose Tech", "Facturo-Pro");

La portée est définie sur Qsettings :: userscope et le format est défini sur Qsettings.nativeFormat (c'est-à-dire appelant SetDefaultformat () avant d'appeler ce constructeur n'a aucun effet).

Seuls certains des constructeurs QSettings respectent le format par défaut et vous avez choisi celui qui ne le fait pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top