@@ -466,12 +466,12 @@ def _write_settings(self):
466
466
app_name ,
467
467
)
468
468
for attr , widget , property in self ._bind_data :
469
- settings . setValue (
470
- attr ,
471
- widget . saveGeometry ()
472
- if property == "geometry"
473
- else widget . property ( property ),
474
- )
469
+ if property == "geometry" :
470
+ settings . setValue ( attr , widget . saveGeometry ())
471
+ elif property == "state" :
472
+ settings . setValue ( attr , widget . saveState ())
473
+ else :
474
+ settings . setValue ( attr , widget . property ( property ) )
475
475
476
476
def trigger_event (self , event ):
477
477
# 一般是 closeEvent 或者 hideEvent
@@ -492,6 +492,11 @@ def bind(self, attr, widget, property, default=None, formatter=None):
492
492
widget .setGeometry (value )
493
493
elif isinstance (value , QtCore .QByteArray ): # settings 有保存值
494
494
widget .restoreGeometry (value )
495
+ elif property == "state" : # 类似 QMainWindow/QSplitter等的布局参数需要特殊处理
496
+ # 由于每种类型组件的state 都不同,所以无法让用户手动传入默认参数,只能读取保存的
497
+ # 用户可以使用组件自己的方法去初始化布局
498
+ if isinstance (value , QtCore .QByteArray ): # settings 有保存值
499
+ widget .restoreState (value )
495
500
else :
496
501
widget .setProperty (property , value )
497
502
self ._bind_data .append ((attr , widget , property ))
0 commit comments