【发布时间】:2015-03-01 15:27:43
【问题描述】:
我这样保存我的一个 QSplitter 的状态:
self.options.setValue("Window/final_splitter", self.splitter2.saveState())
然后我就这样恢复它:
self.splitter2.restoreState(self.options.value("Window/final_splitter"))
当我保存拆分器时, splitter2.sizes() 表示:[321, 818, 769]
当我恢复拆分器时,它在视觉上与我关闭它时的尺寸相同,但 splitter2.sizes() 表示:[224, 572, 537]
而且我无法在拆分器上执行更多操作,因为我无法获得正确的大小。
你知道如何解决这个错误吗?
编辑: 更奇怪的是:
保存:
self.options.setValue("Window/final_splitter", self.splitter2.sizes())
-> self.splitter2.sizes(): [321, 844, 743]
恢复:
sizes_splitter2 = [int(nbr) for nbr in self.options.value("Window/final_splitter", [])]
self.splitter2.setSizes(sizes_splitter2)
- sizes_splitter2:[321、844、743]
- self.splitter2.sizes(): [224, 590, 519]
编辑 2: 当我保存拆分器时,我也会这样做(self 是 QMainWIdow):
self.options.setValue("window_geometry", self.saveGeometry())
self.options.setValue("window_state", self.saveState())
如果我评论这些行,splitter.sizes() 会返回好的值。 但是这两条线完成了他们的工作,窗口与它们一起恢复到正确的大小!
【问题讨论】:
-
在拆分器上调用
.refresh()有帮助吗?文档提到您不需要这样做,但它可能会有所帮助。 -
不,没有任何改变,抱歉。
-
感谢您的澄清。这很奇怪,无法解释。
-
我注意到
321+818+769=1908和224+572+537=1333。如果您使用321/1908=0.168和224/1333=0.168。也就是说第一个区域仍然占据了 16.8% 的窗口,只是窗口更小了。这是真的吗? -
是的,我也开始闻到什么味道了。我对我的问题添加了编辑。但没有窗户不小。当我关闭和打开我的程序时,一切都完全一样。