第一步优化勾选功能

This commit is contained in:
27942
2026-02-05 00:35:15 +08:00
parent 4219c2fb58
commit 65b01af819

View File

@@ -862,6 +862,20 @@ class MainWindow(QMainWindow):
self.config_table.setCellWidget(row, 0, wrapper)
def _sync_checked_from_table(self):
"""从表格当前页的勾选框同步勾选状态到 configs仅非 model_view 且当前页)"""
if self.use_model_view or not self.page_row_indices:
return
for table_row, config_index in enumerate(self.page_row_indices):
if config_index >= len(self.configs):
continue
w = self.config_table.cellWidget(table_row, 0)
if not w:
continue
checkbox = w.findChild(QCheckBox) if hasattr(w, 'findChild') else None
if checkbox is not None:
self.configs[config_index]['勾选'] = checkbox.isChecked()
def _on_checkbox_changed(self, config_index, state):
"""勾选框状态改变回调"""
if config_index < len(self.configs):
@@ -3226,7 +3240,11 @@ class MainWindow(QMainWindow):
try:
# 检查是否有Excel导入的配置
if self.configs:
# 如果存在失败项,自动只勾选失败
# 检查用户是否已经勾选了任何
has_user_selection = any(cfg.get('勾选', False) for cfg in self.configs)
# 只有当用户没有勾选任何项时,才自动勾选失败项
if not has_user_selection:
failed_indices = []
for idx, cfg in enumerate(self.configs):
status = cfg.get('情况', '')
@@ -3262,6 +3280,8 @@ class MainWindow(QMainWindow):
# 执行前强制同步当前页数据,确保手动修改的内容被包含
if not self.use_model_view:
self._sync_configs_from_table()
# 从表格当前页勾选框同步勾选状态到 configs确保执行的是用户当前勾选的行
self._sync_checked_from_table()
# 开始新任务时,从当前数据中统计已有的成功/失败/待执行数量(累计历史数据)
existing_success = 0