Формат настроек QSettings INI Все еще использует реестр в Windows

StackOverflow https://stackoverflow.com//questions/10678651

  •  12-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь установить путь для хранения некоторых пользовательских настроек для моего приложения, используя QSettings :: SetPath и defaulformat, но оба, кажется, игнорируются, когда я пытаюсь использовать файл настроек.

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

Я хотел бы оставаться с использованием settings = QSettings(), если я смогу без необходимости поставлять QSettings::IniFormat к нему, так как он является приложением по перекрестным платформам и должна использовать нативный формат, если пользовательский путь не установлен.

Это было полезно?

Решение

Документация QSettings введена в заблуждение предполагает, что код

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

эквивалентно

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

Но это не правда.Попробуйте это

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

, и вы увидите, что только второй конструктор использует формат по умолчанию.И если вы посмотрите на документацию конструктора QSettings, вы увидите, что это подтверждено:

Пример:

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

Область применения установлено значение QSettings :: Userscrop, а формат установлен на Qsettings.nappyformat (то есть вызов setdefaultformat () перед вызовом этого конструктора не имеет эффекта).

Только некоторые из конструкторов QSettings почитают формат по умолчанию, и вы выбрали тот, который не делает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top