我正在尝试使用 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 构造函数遵循默认格式,而您选择了不遵循默认格式的格式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top