diff --git a/lite/proxy_lite.py b/lite/proxy_lite.py index fe1dc49..f129179 100644 --- a/lite/proxy_lite.py +++ b/lite/proxy_lite.py @@ -1438,11 +1438,19 @@ class SettingsDialog(QDialog): title.setAlignment(Qt.AlignCenter) layout.addWidget(title) - # 版本号:标题下固定显示 + # 版本号(左)+ 手动「检查更新」入口(右,节点同款 hover) + ver_row = QHBoxLayout() ver_lab = QLabel(f"版本号: {VERSION}") ver_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;") - ver_lab.setAlignment(Qt.AlignCenter) - layout.addWidget(ver_lab) + ver_row.addWidget(ver_lab) + ver_row.addStretch() + self.link_check_update = NodeLabel( + "检查更新", tooltip="手动检查更新", + base=f"color: {C_SUBTEXT}; font-size: 11px;", + hover=f"color: {C_TEXT}; font-size: 11px; text-decoration: underline;") + self.link_check_update.clicked.connect(self._manual_check_update) + ver_row.addWidget(self.link_check_update) + layout.addLayout(ver_row) # 提示语:标题正下方(保存结果/错误也显示在这行) self.lb_hint = QLabel("代理运行中,关闭代理后可修改" if port_locked else "保存更改后下次开启代理生效") @@ -1520,6 +1528,27 @@ class SettingsDialog(QDialog): btns.addStretch() layout.addLayout(btns) + def _manual_check_update(self): + """手动触发一次检查更新(后台线程,复用主窗口逻辑)。""" + parent = self.parent() + if not isinstance(parent, MainWindow): + return + self.lb_hint.setText("正在检查更新...") + self.lb_hint.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;") + try: + parent._update_done.connect(self._on_check_done) + except TypeError: + pass # 已连接过,忽略 + threading.Thread(target=parent._check_update, daemon=True).start() + + def _on_check_done(self): + self.lb_hint.setText("检查完成,结果见主界面日志") + self.lb_hint.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;") + try: + self.parent()._update_done.disconnect(self._on_check_done) + except Exception: + pass + def _save_settings(self): """保存更改:统一校验并应用全部设置项(后续新增设置项在此扩展)。""" port = _parse_port(self.ed_port.text())