From 525c123211936ff61cc46cc617cea0386fea724e Mon Sep 17 00:00:00 2001 From: gaozheng Date: Thu, 11 Jun 2026 16:14:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E5=8E=9F=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=95=A3=E7=82=B9=E9=94=81=E5=AE=9A=20x:y=20=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E6=AF=94=E5=B0=BA(QwtPlotRescaler=20aspect=3D1,=20Expanding)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/panels/chart/RawDataChartView.cpp | 13 +++++++++++-- src/app/panels/chart/RawDataChartView.hpp | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/app/panels/chart/RawDataChartView.cpp b/src/app/panels/chart/RawDataChartView.cpp index 901ee92..f6c7609 100644 --- a/src/app/panels/chart/RawDataChartView.cpp +++ b/src/app/panels/chart/RawDataChartView.cpp @@ -13,6 +13,7 @@ #include #include #include +#include namespace geopro::app { @@ -91,8 +92,15 @@ RawDataChartView::RawDataChartView(QWidget* parent) : QWidget(parent) { // 反转滚轮方向:Qwt 默认 wheelFactor=0.9 → 上滚缩小;取倒数使「上滚=放大」(常规习惯)。 magnifier->setWheelFactor(1.0 / 0.9); - // 允许随停靠面板自由收缩(不强制最小宽度→不出横向滚动条,对齐原版响应式填充)。 + // 允许随停靠面板自由收缩(不强制最小宽度)。 plot_->setMinimumSize(0, 0); + + // 锁定 x:y 真实比尺(用户选定):1 数据单位 x = 1 数据单位 y(像素)。 + // 参考轴 xTop、Expanding 策略——resize/缩放时维持等比,剖面呈真实"宽扁"形状。 + rescaler_ = new QwtPlotRescaler(plot_->canvas(), QwtPlot::xTop, QwtPlotRescaler::Expanding); + rescaler_->setAspectRatio(1.0); + rescaler_->setEnabled(true); + lay->addWidget(plot_, 1); // ---- 独立色阶条(固定高 36px,QwtPlot 的兄弟 widget)---- @@ -134,7 +142,8 @@ void RawDataChartView::setData( plot_->setAxisScale(QwtPlot::xTop, bbox.left(), bbox.right()); plot_->setAxisScale(QwtPlot::yLeft, bbox.top(), bbox.bottom()); } - + plot_->updateAxes(); + if (rescaler_) rescaler_->rescale(); // 应用真实比尺 plot_->replot(); // 更新色阶条 diff --git a/src/app/panels/chart/RawDataChartView.hpp b/src/app/panels/chart/RawDataChartView.hpp index 25bcc58..09db06c 100644 --- a/src/app/panels/chart/RawDataChartView.hpp +++ b/src/app/panels/chart/RawDataChartView.hpp @@ -5,6 +5,7 @@ class QComboBox; class QwtPlot; +class QwtPlotRescaler; namespace geopro::app { @@ -25,6 +26,7 @@ public: private: geopro::controller::DatasetDetailController::ChartData data_; QwtPlot* plot_; + QwtPlotRescaler* rescaler_ = nullptr; // 锁定 x:y 真实比尺 ColorBarWidget* colorBar_; QComboBox* chartTypeCombo_;