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

1つの設定ファイルを使用して、レイアウトごとに個別のグループを作成します。

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 に答える