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;