我意识到这听起来非常多余,因为pickle和QSettings基本上实现了同一件事,但是让我解释一下.
我有一个程序,该程序由可以固定,调整大小或以其他方式修改的小部件组成.用户希望能够将各种状态保存为布局并在这些布局之间进行更改.布局另存为QSettings文件.
要保存布局列表,我想腌制一个格式为{‘layoutName’:qSettingsFile,’anotherName’:anotherFile}的字典,但是当我尝试腌制QSettings文件时,出现TypeError:sip.wrapper类型不能为实例化或子类化.
有没有办法使这项工作?我可以将QSettings文件的内容放在字典中,而不必理会QSettings,但是我希望有一种更简单/更快捷的方法.
解决方法:
使用一个设置文件,并为每种布局创建单独的组.
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创建索引的布局列表.