我正在尝试使用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
,因为它是一个跨平台应用程序,如果未设置自定义路径,则应使用本机格式。
答案 0 :(得分:8)
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 :: UserScope,格式设置为 QSettings.NativeFormat(即在调用此构造函数之前调用setDefaultFormat()) 没有效果。)
只有部分QSettings构造函数遵循默认格式,而您选择的格式不是。