2

我正在尝试使用 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它,因为它是一个跨平台应用程序,如果未设置自定义路径,则应使用本机格式。

4

1 回答 1

9

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 构造函数支持默认格式,而您选择了不支持的格式。

于 2012-05-21T11:43:24.367 回答