支持QSettings
Qt将QSettings类作为独立于平台的API提供,用于持久存储和检索应用程序设置。使用该value()
方法检索设置 。但是,返回的值的类型可能不是预期的。某些平台只存储字符串值,这意味着原始值的类型将丢失。因此,42
可以检索具有整数值的设置(在某些平台上)作为字符串值'42'
。
作为这个问题的解决方案,PyQt5的实现 value()
采用了一个可选的第三个参数调用 type
。这可以是Python类型对象,例如int
,也可以是C ++类型名称的字符串,例如'QStringList'
。返回的值将是所请求类型的对象。
例如:
from PyQt5.QtCore import QSettings, QPoint
settings = QSettings('foo', 'foo')
settings.setValue('int_value', 42)
settings.setValue('point_value', QPoint(10, 12))
# This will write the setting to the platform specific storage.
del settings
settings = QSettings('foo', 'foo')
int_value = settings.value('int_value', type=int)
print("int_value: %s" % repr(int_value))
point_value = settings.value('point_value', type=QPoint)
print("point_value: %s" % repr(point_value))
执行此操作时,将显示所有平台的以下内容:
int_value: 42
point_value: PyQt5.QtCore.QPoint(10, 20)
如果设置的值是容器(对应于或 QVariantList
,QVariantMap
或QVariantHash
),则类型将应用于容器的内容。
例如:
from PyQt5.QtCore import QSettings
settings = QSettings('foo', 'foo')
settings.setValue('list_value', [1, 2, 3])
settings.setValue('dict_value', {'one': 1, 'two': 2})
# This will write the setting to the platform specific storage.
del settings
settings = QSettings('foo', 'foo')
list_value = settings.value('list_value', type=int)
print("list_value: %s" % repr(list_value))
dict_value = settings.value('dict_value', type=int)
print("dict_value: %s" % repr(dict_value))
执行此操作时,将显示所有平台的以下内容:
list_value: [1, 2, 3]
dict_value: {'one': 1, 'two': 2}