From ebccfb41656d27dd938deaac12c5c85203750a0a Mon Sep 17 00:00:00 2001 From: RoyirinRosmontis Date: Mon, 24 Aug 2026 12:28:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD=EF=BC=9A?= =?UTF-8?q?=20-=20=E8=AE=BE=E7=BD=AE=E5=BC=B9=E7=AA=97=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7=E5=B7=A6=E5=AF=B9=E9=BD=90=EF=BC=8C=E5=8F=B3=E4=BE=A7?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=8C=E6=A3=80=E6=9F=A5=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E3=80=8D=E5=85=A5=E5=8F=A3=EF=BC=88=E8=8A=82=E7=82=B9=E5=90=8C?= =?UTF-8?q?=E6=AC=BE=20hover=EF=BC=89=EF=BC=8C=E7=82=B9=E5=87=BB=E6=89=8B?= =?UTF-8?q?=E5=8A=A8=E8=A7=A6=E5=8F=91=E4=B8=80=E6=AC=A1=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=88=E5=90=8E=E5=8F=B0=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=EF=BC=8C=E5=AE=8C=E6=88=90=E5=90=8E=E6=8F=90=E7=A4=BA=E8=A7=81?= =?UTF-8?q?=E4=B8=BB=E7=95=8C=E9=9D=A2=E6=97=A5=E5=BF=97=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lite/proxy_lite.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) 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())