QSettings setpath ini 格式仍在 Windows 上使用注册表
题
我正在尝试使用 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 :: usercope,并且格式设置为qsettings.nativeformat(即调用setDefaultFormat()在调用此构造函数之前没有效果)。
只有某些 QSettings 构造函数遵循默认格式,而您选择了不遵循默认格式的格式。
不隶属于 StackOverflow