新增功能:

- 设置弹窗版本号左对齐,右侧新增「检查更新」入口(节点同款 hover),点击手动触发一次检查更新(后台执行,完成后提示见主界面日志)
This commit is contained in:
RoyirinRosmontis
2026-08-24 12:28:59 +08:00
parent b9a35684ac
commit ebccfb4165
+32 -3
View File
@@ -1438,11 +1438,19 @@ class SettingsDialog(QDialog):
title.setAlignment(Qt.AlignCenter) title.setAlignment(Qt.AlignCenter)
layout.addWidget(title) layout.addWidget(title)
# 版本号:标题下固定显示 # 版本号(左)+ 手动「检查更新」入口(右,节点同款 hover)
ver_row = QHBoxLayout()
ver_lab = QLabel(f"版本号: {VERSION}") ver_lab = QLabel(f"版本号: {VERSION}")
ver_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;") ver_lab.setStyleSheet(f"color: {C_SUBTEXT}; font-size: 11px;")
ver_lab.setAlignment(Qt.AlignCenter) ver_row.addWidget(ver_lab)
layout.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 "保存更改后下次开启代理生效") self.lb_hint = QLabel("代理运行中,关闭代理后可修改" if port_locked else "保存更改后下次开启代理生效")
@@ -1520,6 +1528,27 @@ class SettingsDialog(QDialog):
btns.addStretch() btns.addStretch()
layout.addLayout(btns) 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): def _save_settings(self):
"""保存更改:统一校验并应用全部设置项(后续新增设置项在此扩展)。""" """保存更改:统一校验并应用全部设置项(后续新增设置项在此扩展)。"""
port = _parse_port(self.ed_port.text()) port = _parse_port(self.ed_port.text())