From f4d07d95069a97af2174101e1a954cbc87b67923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=98=9F?= <10947742+xu-xing9@user.noreply.gitee.com> Date: Wed, 1 Jul 2026 15:02:23 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(main):=20=E6=B7=BB=E5=8A=A0=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E9=9B=B7=E8=BE=BE=E5=AD=98=E5=82=A8=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E6=B3=A8=E5=85=A5=E5=88=B0=E5=AF=B9=E8=B1=A1=E6=A0=91=E5=8F=B3?= =?UTF-8?q?=E9=94=AE=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 为对象树右键菜单的动作处理函数添加 localRadarStore 引用, 以便在上下文操作中能够访问本地雷达数据存储。 perf(api): 设置网络请求超时机制 为所有 API 客户端请求添加 15 秒超时设置,避免服务器不 可达时 UI 界面永久卡死。同时扩展样本数据搜索路径以包含 更多数据源目录。 ``` --- src/app/main.cpp | 7 ++++--- src/net/ApiClient.cpp | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index faaae99..1a4b111 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1959,9 +1959,9 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re // 对象树右键菜单动作路由。 QObject::connect( objectTree, &geopro::app::ObjectTreePanel::contextActionRequested, &window, - [&nav, &projectRepo, &window, anomalyTabGroup, toast, objAttrView, objectTree]( - const QString& action, const QString& id, int confType, const QString& typeId, - const QString& name) { + [&nav, &projectRepo, &window, anomalyTabGroup, toast, objAttrView, objectTree, + &localRadarStore](const QString& action, const QString& id, int confType, + const QString& typeId, const QString& name) { if (action == QStringLiteral("properties")) { nav.selectObject(id, confType); // 右键「属性」:用可编辑面板渲染(与左键单击同口径)。 @@ -2536,6 +2536,7 @@ int main(int argc, char* argv[]) const QString appDir = QCoreApplication::applicationDirPath(); const QStringList candidates = { appDir + QStringLiteral("/sampledata"), + QDir::cleanPath(appDir + QStringLiteral("/../../../../docs/剖面网格数据的色阶数据2等文件")), QStringLiteral("D:/Git/lanbingtech/geopro/docs/剖面网格数据的色阶数据2等文件"), }; for (const auto& c : candidates) { diff --git a/src/net/ApiClient.cpp b/src/net/ApiClient.cpp index f8a94df..9887ce7 100644 --- a/src/net/ApiClient.cpp +++ b/src/net/ApiClient.cpp @@ -30,6 +30,7 @@ struct ApiClient::Impl { QNetworkRequest buildRequest(const QString& path) const { QNetworkRequest req{QUrl(baseUrl + path)}; req.setHeader(QNetworkRequest::ContentTypeHeader, QString::fromLatin1(kContentTypeJson)); + req.setTransferTimeout(15000); // 15 秒超时:避免服务器不可达时 UI 永久卡住 if (!token.isEmpty()) { req.setRawHeader(QByteArray(kTokenHeader), token.toUtf8()); } @@ -100,6 +101,7 @@ IApiCall* ApiClient::postMultipartAsync(const QString& path, // multipart 自带 boundary 的 Content-Type:用不含 JSON 头的请求,只保留 token。 QNetworkRequest req{QUrl(impl_->baseUrl + path)}; + req.setTransferTimeout(15000); if (!impl_->token.isEmpty()) req.setRawHeader(QByteArray(kTokenHeader), impl_->token.toUtf8()); QNetworkReply* reply = impl_->nam.post(req, multi);