From 961af652d771e13666e8bd59961b114f1fe18ab4 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Thu, 25 Jun 2026 17:41:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20#1=20=E4=B8=A4=20tab=20=E5=B9=B3?= =?UTF-8?q?=E5=88=86=E6=8A=BD=E5=B1=89=E5=AE=BD=E5=BA=A6,=E6=B6=88?= =?UTF-8?q?=E9=99=A4=E6=97=A73=E6=A0=8F=E9=81=97=E7=95=99=E7=9A=84?= =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E7=A9=BA=E7=99=BD=E7=AC=AC=E4=B8=89=E6=A0=8F?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 旧布局 3 栏(三维数据集/二维数据集/三维分析)三分横向空间;重构成 2 tab 后全局 QSS 让 tab 取 内容宽度左对齐,宽抽屉右侧留出约一栏空白(用户感知为"空着的第三栏位")。带样式表的 tab 不响应 setExpanding,故在 ColumnDrawer::resizeEvent 按 barWidth/n 给每个 tab 显式宽度,两 tab 平分填满。 构建:app 链接通过 --- src/app/panels/columns/ColumnDrawer.cpp | 18 ++++++++++++++++++ src/app/panels/columns/ColumnDrawer.hpp | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/src/app/panels/columns/ColumnDrawer.cpp b/src/app/panels/columns/ColumnDrawer.cpp index 41b5522..640eb5b 100644 --- a/src/app/panels/columns/ColumnDrawer.cpp +++ b/src/app/panels/columns/ColumnDrawer.cpp @@ -1,10 +1,14 @@ #include "panels/columns/ColumnDrawer.hpp" #include "panels/columns/Column2DDataset.hpp" #include "panels/columns/CategoryAnalysisTab.hpp" +#include + #include "Glyphs.hpp" #include "Theme.hpp" #include #include +#include +#include #include namespace geopro::app { @@ -49,6 +53,20 @@ ColumnDrawer::ColumnDrawer(QWidget* parent, geopro::data::DatasetFieldDictionary setMaximumWidth(560); } +void ColumnDrawer::resizeEvent(QResizeEvent* e) +{ + QWidget::resizeEvent(e); + // 两 tab 平分抽屉宽度填满(带样式表的 tab 不响应 setExpanding,须按 barWidth/n 显式给宽)。 + // 消除旧 3 栏布局遗留的右侧空白——重构成 2 栏后不再三分、留空第三位。 + if (auto* tabs = qobject_cast(body_)) { + const int n = tabs->count(); + if (n > 0 && tabs->width() > 0) { + const int w = std::max(40, tabs->width() / n - 6); // 减 margin-right(4)余量 + tabs->tabBar()->setStyleSheet(QStringLiteral("QTabBar::tab{width:%1px;}").arg(w)); + } + } +} + void ColumnDrawer::toggleCollapsed() { collapsed_ = !collapsed_; diff --git a/src/app/panels/columns/ColumnDrawer.hpp b/src/app/panels/columns/ColumnDrawer.hpp index f75b5ac..bfadc73 100644 --- a/src/app/panels/columns/ColumnDrawer.hpp +++ b/src/app/panels/columns/ColumnDrawer.hpp @@ -2,6 +2,7 @@ #include class QPushButton; +class QResizeEvent; namespace geopro::data { class DatasetFieldDictionary; @@ -26,6 +27,9 @@ public slots: void toggleCollapsed(); void expand(); // 强制展开(进入全屏时确保三栏可见) +protected: + void resizeEvent(QResizeEvent* e) override; // 两 tab 按抽屉宽平分(消除右侧空白"第三栏位") + private: Column2DDataset* col2D_ = nullptr; CategoryAnalysisTab* analysisTab_ = nullptr;