Domanda

Sto cercando di impostare il percorso per archiviare alcune impostazioni personalizzate per la mia app utilizzando QSettings :: SetPath e DefaulFormat ma entrambi sembrano ignorare quando provo a utilizzare il file delle impostazioni.

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

Vorrei soggiornare usando settings = QSettings() se posso senza dover fornire QSettings::IniFormat ad esso poiché è un'app cross platform e dovrebbe utilizzare il formato nativo se il percorso personalizzato non è impostato.

È stato utile?

Soluzione

La documentazione QSetings suggerisce in modo fuorviante che il codice

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

è equivalente a

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

Ma questo non è vero.Prova questo

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()
.

E vedrai che solo il secondo costruttore utilizza il formato predefinito.E se guardi la documentazione del costruttore QSetings vedrai questo confermato:

.

Esempio:

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

Lo scopo è impostato su QSetings :: UsedScope e il formato è impostato su Qsettings.nativeFormat (I.e. Chiamando SetDefaultFormat () Prima di chiamare questo costruttore non ha effetto).

Solo alcuni dei costruttori QSetings onorano il formato predefinito e ne hai scelto uno che non è.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top