是否可以挑选QSettings对象?

时间:2012-12-05 17:41:19

标签: python pyqt pyqt4 pickle

我意识到这听起来非常多余,因为pickle和QSettings基本上实现了同样的目的,但让我解释一下。

我有一个由可以停靠,调整大小或以其他方式修改的小部件组成的程序。用户希望能够将各种状态保存为布局并在这些布局之间进行更改。布局保存为QSettings文件。

要保存布局列表,我想挑选格式为{'layoutName':qSettingsFile, 'anotherName':anotherFile}的字典,但是当我尝试挑选QSettings文件时,我得到TypeError: the sip.wrapper type cannot be instantiated or sub-classed

有没有办法让这项工作?我可以把QSettings文件的内容放在字典中而忘记QSettings,但我希望更容易/更短的方式。

1 个答案:

答案 0 :(得分:4)

使用一个设置文件,并为每个布局创建单独的组。

QSettings syntax支持分层键,因此只需使用beginGroupendGroup创建命名布局部分:

settings.beginGroup('layouts')
settings.beginGroup('layoutname1')
# set various layout values...
settings.endGroup()
settings.beginGroup('layoutname2')
# set various layout values...
settings.endGroup()
settings.endGroup()

哪个会输出如下文件:

layouts/layoutname1/value1=true
layouts/layoutname1/value2=true
...
layouts/layoutname2/value1=false
layouts/layoutname2/value2=false
...

或者,您可以使用QSettings arrays创建一个索引的布局列表。