1

私は現在PySideでアプリケーションを書いていますが、終了時にウィンドウのサイズを保存したいと思っています。geometry()メソッドは次のようなものに戻りますが、必要なのPySide.QtCore.QRect(300, 300, 550, 150)はです(300, 300, 550, 150)。それを解析する方法を見つけることができましたが、よりクリーンな方法が必要です。助言がありますか?

4

3 に答える 3

3

解析を行わないよりクリーンな方法は、ネイティブ アプリケーション設定ストレージ (Windows レジストリ、.ini ファイル、.plist ファイルなど) との間でジオメトリによって返されたデータQSettingsを格納および取得するために使用することです。QRect

例えば:

settings = QSettings(...);    
settings.setValue("lastGeometry", self.geometry())

# and to retrieve the value
lastGeometry = settings.value("lastGeometry")
if lastGeometry.isValid():
    self.setGeometry(lastGeometry)

を 4 つの 32 ビット整数を表す 16 バイト配列にバイナリ シリアライズまたはデシリアライズすることもできQRectます。QDataStream

于 2012-03-05T01:47:42.007 に答える
1

OPが@alexisdmからのものを受け入れたことを考えると、これは興味深いかもしれません:

restoreGeometry()画面ウィンドウの外側と上部の境界線の外にあるウィンドウの回復を処理するため、使用を検討していました。しかし: QByteArrayが必要で、私の場合はプレーンな Python データしか保存できません。そこで、バイト配列を文字列に変換しようとしました:

encoded = str(self.saveGeometry().toPercentEncoding())
print('encoded: %s' % encoded)
>>> encoded: %01%D9%D0%CB%00%01%00%00%FF%F...

geometry = QtCore.QByteArray().fromPercentEncoding(encoded)
self.restoreGeometry(geometry)

ほら!

于 2015-08-04T21:17:04.523 に答える