我意识到这听起来非常多余,因为pickle和QSettings基本上实现了同样的目的,但让我解释一下。
我有一个由可以停靠,调整大小或以其他方式修改的小部件组成的程序。用户希望能够将各种状态保存为布局并在这些布局之间进行更改。布局保存为QSettings文件。
要保存布局列表,我想挑选格式为{'layoutName':qSettingsFile, 'anotherName':anotherFile}
的字典,但是当我尝试挑选QSettings文件时,我得到TypeError: the sip.wrapper type cannot be instantiated or sub-classed
。
有没有办法让这项工作?我可以把QSettings文件的内容放在字典中而忘记QSettings,但我希望更容易/更短的方式。
答案 0 :(得分:4)
使用一个设置文件,并为每个布局创建单独的组。
QSettings syntax支持分层键,因此只需使用beginGroup和endGroup创建命名布局部分:
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创建一个索引的布局列表。