Skip to content

Commit 858540f

Browse files
muyrloonghao
authored andcommitted
Support state(saveState/restoreState) keyword for utils.add_settings
1 parent dcb8be3 commit 858540f

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

dayu_widgets/utils.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -466,12 +466,12 @@ def _write_settings(self):
466466
app_name,
467467
)
468468
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))
475475

476476
def trigger_event(self, event):
477477
# 一般是 closeEvent 或者 hideEvent
@@ -492,6 +492,11 @@ def bind(self, attr, widget, property, default=None, formatter=None):
492492
widget.setGeometry(value)
493493
elif isinstance(value, QtCore.QByteArray): # settings 有保存值
494494
widget.restoreGeometry(value)
495+
elif property == "state": # 类似 QMainWindow/QSplitter等的布局参数需要特殊处理
496+
# 由于每种类型组件的state 都不同,所以无法让用户手动传入默认参数,只能读取保存的
497+
# 用户可以使用组件自己的方法去初始化布局
498+
if isinstance(value, QtCore.QByteArray): # settings 有保存值
499+
widget.restoreState(value)
495500
else:
496501
widget.setProperty(property, value)
497502
self._bind_data.append((attr, widget, property))

0 commit comments

Comments
 (0)