fix(ui): #1 两 tab 平分抽屉宽度,消除旧3栏遗留的右侧空白第三栏位
旧布局 3 栏(三维数据集/二维数据集/三维分析)三分横向空间;重构成 2 tab 后全局 QSS 让 tab 取 内容宽度左对齐,宽抽屉右侧留出约一栏空白(用户感知为"空着的第三栏位")。带样式表的 tab 不响应 setExpanding,故在 ColumnDrawer::resizeEvent 按 barWidth/n 给每个 tab 显式宽度,两 tab 平分填满。 构建:app 链接通过
This commit is contained in:
parent
a6cdd2ff80
commit
961af652d7
|
|
@ -1,10 +1,14 @@
|
||||||
#include "panels/columns/ColumnDrawer.hpp"
|
#include "panels/columns/ColumnDrawer.hpp"
|
||||||
#include "panels/columns/Column2DDataset.hpp"
|
#include "panels/columns/Column2DDataset.hpp"
|
||||||
#include "panels/columns/CategoryAnalysisTab.hpp"
|
#include "panels/columns/CategoryAnalysisTab.hpp"
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include "Glyphs.hpp"
|
#include "Glyphs.hpp"
|
||||||
#include "Theme.hpp"
|
#include "Theme.hpp"
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QResizeEvent>
|
||||||
|
#include <QTabBar>
|
||||||
#include <QTabWidget>
|
#include <QTabWidget>
|
||||||
|
|
||||||
namespace geopro::app {
|
namespace geopro::app {
|
||||||
|
|
@ -49,6 +53,20 @@ ColumnDrawer::ColumnDrawer(QWidget* parent, geopro::data::DatasetFieldDictionary
|
||||||
setMaximumWidth(560);
|
setMaximumWidth(560);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ColumnDrawer::resizeEvent(QResizeEvent* e)
|
||||||
|
{
|
||||||
|
QWidget::resizeEvent(e);
|
||||||
|
// 两 tab 平分抽屉宽度填满(带样式表的 tab 不响应 setExpanding,须按 barWidth/n 显式给宽)。
|
||||||
|
// 消除旧 3 栏布局遗留的右侧空白——重构成 2 栏后不再三分、留空第三位。
|
||||||
|
if (auto* tabs = qobject_cast<QTabWidget*>(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()
|
void ColumnDrawer::toggleCollapsed()
|
||||||
{
|
{
|
||||||
collapsed_ = !collapsed_;
|
collapsed_ = !collapsed_;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
class QPushButton;
|
class QPushButton;
|
||||||
|
class QResizeEvent;
|
||||||
|
|
||||||
namespace geopro::data {
|
namespace geopro::data {
|
||||||
class DatasetFieldDictionary;
|
class DatasetFieldDictionary;
|
||||||
|
|
@ -26,6 +27,9 @@ public slots:
|
||||||
void toggleCollapsed();
|
void toggleCollapsed();
|
||||||
void expand(); // 强制展开(进入全屏时确保三栏可见)
|
void expand(); // 强制展开(进入全屏时确保三栏可见)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void resizeEvent(QResizeEvent* e) override; // 两 tab 按抽屉宽平分(消除右侧空白"第三栏位")
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Column2DDataset* col2D_ = nullptr;
|
Column2DDataset* col2D_ = nullptr;
|
||||||
CategoryAnalysisTab* analysisTab_ = nullptr;
|
CategoryAnalysisTab* analysisTab_ = nullptr;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue