feat/vtk-3d-view #7

Merged
gaozheng merged 301 commits from feat/vtk-3d-view into main 2026-06-27 18:43:52 +08:00
2 changed files with 22 additions and 0 deletions
Showing only changes of commit 961af652d7 - Show all commits

View File

@ -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_;

View File

@ -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;