1

我目前正在 PySide 中编写一个应用程序,我希望它在退出时保存窗口尺寸。该geometry()方法返回类似PySide.QtCore.QRect(300, 300, 550, 150)但我想要的只是(300, 300, 550, 150). 我可以找到一种解析它的方法,但我想要一种更简洁的方法。有什么建议么?

4

3 回答 3

5

getRect方法返回值的元组

>>> widget.geometry().getRect()
(0, 0, 640, 480)
于 2012-03-05T02:47:31.943 回答
3

更简洁的方法,无需任何解析,将QSettings用于存储和检索QRect几何返回到/从本机应用程序设置存储(Windows 注册表、.ini 文件、.plist 文件...)。

例如:

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

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

您还可以将 a 二进制序列化或反序列化为QRect一个QDataStream16 字节数组,表示 4 个 32 位整数。

于 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 回答