2012-05-21 2 views
2

J'essaie de définir le chemin pour stocker des paramètres personnalisés pour mon application en utilisant QSettings :: setPath et defaulFormat, mais les deux semblent être ignorés lorsque j'essaie d'utiliser le fichier de paramètres.QSettings setpath format ini toujours en utilisant le registre sur windows

>>> 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') 

Je voudrais rester à l'aide settings = QSettings() si je peux sans avoir à fournir QSettings::IniFormat à elle car elle est une application multi-plateforme et doit utiliser le format natif si le chemin d'accès personnalisé n'est pas réglé.

Répondre

8

La documentation QSettings suggère trompeusement que le code

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

est é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 second constructeur utilise le format par défaut. Et si vous regardez la documentation du constructeur QSettings vous verrez cela a confirmé:

Exemple:

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

Le champ d'application est défini sur QSettings :: UserScope et le format est réglé sur QSettings.NativeFormat (ie appeler setDefaultFormat() avant d'appeler ce constructeur n'a aucun effet).

Seuls certains des constructeurs QSettings respectent le format par défaut et vous en avez choisi un autre.

+1

Un excellent design d'API là-bas –

Questions connexes