3

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

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

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

有没有办法使这项工作?我可以将 QSettings 文件的内容放入字典中而忘记 QSettings,但我希望有一种更简单/更短的方法。

4

1 回答 1

4

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

QSettings语法支持分层键,因此只需使用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 数组来创建布局的索引列表。

于 2012-12-05T20:13:28.800 回答