From d24fb91f8a91af79549d12576e03964ee31379aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=8B=E4=B8=80=E9=B8=A3?= <1000000008@qq.com> Date: Thu, 29 Oct 2026 02:10:14 -0400 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=9A=E6=8E=A5=E5=85=A5?= =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E8=BF=9E=E6=8E=A5=E8=AE=BE=E7=BD=AE=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E4=B8=8E=E7=AE=A1=E7=90=86=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- terminal/kiosk-shell/src/main_window.cpp | 32 +++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/terminal/kiosk-shell/src/main_window.cpp b/terminal/kiosk-shell/src/main_window.cpp index ac41589..2042622 100644 --- a/terminal/kiosk-shell/src/main_window.cpp +++ b/terminal/kiosk-shell/src/main_window.cpp @@ -24,6 +24,7 @@ #include #include "desktop_list_page.h" +#include "desktop_settings_dialog.h" #include "login_page.h" namespace vdi { @@ -132,6 +133,7 @@ void MainWindow::setupUi() { stack_->addWidget(list); connect(list, &DesktopListPage::desktopSelected, this, &MainWindow::onDesktopSelected); + connect(list, &DesktopListPage::editRequested, this, &MainWindow::onEditDesktopRequested); connect(list, &DesktopListPage::logoutRequested, this, &MainWindow::onLogoutRequested); // 会话视图 @@ -330,6 +332,28 @@ void MainWindow::onDesktopSelected(const QString& desktopId) { }); } +void MainWindow::onEditDesktopRequested(const QString& desktopId) { + // 桌面连接设置:编辑协议/地址/应用名/分辨率/帧率,保存后立即刷新列表。 + // 现场环境地址不同或走 VPN 隧道时,在这里改地址即可,无需改代码。 + DesktopSettingsDialog dialog(desktops_, desktopId, this); + dialog.setStyleSheet( + QStringLiteral("QWidget { background: #0f1420; color: #e6e9ef; }" + "QLineEdit { background: #1a2233; border: 1px solid #2b3654; " + "border-radius: 4px; padding: 8px; color: #e6e9ef; }" + "QComboBox { background: #1a2233; border: 1px solid #2b3654; " + "border-radius: 4px; padding: 8px; color: #e6e9ef; }" + "QPushButton { background: #232d44; border: 1px solid #2b3654; " + "border-radius: 6px; color: #e6e9ef; }" + "QLabel { color: #e6e9ef; }")); + if (dialog.exec() == QDialog::Accepted) { + desktops_ = dialog.desktops(); + if (desktopListPage_) { + desktopListPage_->setDesktops(desktops_); + desktopListPage_->setStatus(QStringLiteral("连接配置已保存")); + } + } +} + void MainWindow::onLogoutRequested() { stopSessions(); desktopService_.logout(); @@ -546,12 +570,18 @@ void MainWindow::onMenuAction(int action) { break; default: { QMenu menu(this); + QAction* settings = menu.addAction(QStringLiteral("桌面连接设置")); + menu.addSeparator(); QAction* reconnect = menu.addAction(QStringLiteral("重新连接当前桌面")); QAction* disconnect = menu.addAction(QStringLiteral("断开并返回桌面列表")); menu.addSeparator(); QAction* quit = menu.addAction(QStringLiteral("退出终端")); QAction* chosen = menu.exec(QCursor::pos()); - if (chosen == reconnect) { + if (chosen == settings) { + if (fsm_.current() == State::kDesktopList || fsm_.current() == State::kConfig) { + onEditDesktopRequested(QString()); + } + } else if (chosen == reconnect) { onMenuAction(1); } else if (chosen == disconnect) { onMenuAction(2);