diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index 2d06c4a..df7e512 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -53,6 +53,7 @@ add_executable(geopro_desktop WIN32 panels/columns/Column2DDataset.cpp panels/columns/Column3DDataset.cpp panels/columns/Column3DAnalysis.cpp + panels/columns/ColumnDrawer.cpp panels/AnomalyTablePanel.cpp panels/LoadingOverlay.cpp panels/DatasetDetailPage.cpp diff --git a/src/app/panels/columns/ColumnDrawer.cpp b/src/app/panels/columns/ColumnDrawer.cpp new file mode 100644 index 0000000..0479003 --- /dev/null +++ b/src/app/panels/columns/ColumnDrawer.cpp @@ -0,0 +1,52 @@ +#include "panels/columns/ColumnDrawer.hpp" +#include "panels/columns/Column3DDataset.hpp" +#include "panels/columns/Column2DDataset.hpp" +#include "panels/columns/Column3DAnalysis.hpp" +#include +#include +#include + +namespace geopro::app { + +ColumnDrawer::ColumnDrawer(QWidget* parent) + : QWidget(parent) +{ + // 创建三个栏 + col3D_ = new Column3DDataset(this); + col2D_ = new Column2DDataset(this); + colAnalysis_ = new Column3DAnalysis(this); + + // Tab 容器(body_) + auto* tabs = new QTabWidget(this); + body_ = tabs; + tabs->addTab(col3D_, QStringLiteral("三维数据集")); + tabs->addTab(col2D_, QStringLiteral("二维数据集")); + tabs->addTab(colAnalysis_, QStringLiteral("三维分析")); + + // 折叠按钮:固定宽 16px,垂直拉伸 + toggleBtn_ = new QPushButton(QStringLiteral("◀"), this); + toggleBtn_->setFixedWidth(16); + toggleBtn_->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + connect(toggleBtn_, &QPushButton::clicked, this, &ColumnDrawer::toggleCollapsed); + + // 根布局:[body_ | toggleBtn_],无边距 + auto* root = new QHBoxLayout(this); + root->setContentsMargins(0, 0, 0, 0); + root->setSpacing(0); + root->addWidget(body_, 1); + root->addWidget(toggleBtn_, 0); + + // 展开时限宽 ~316px (300 body + 16 btn) + setMaximumWidth(316); +} + +void ColumnDrawer::toggleCollapsed() +{ + collapsed_ = !collapsed_; + body_->setVisible(!collapsed_); + toggleBtn_->setText(collapsed_ ? QStringLiteral("▶") : QStringLiteral("◀")); + // 折叠后只保留按钮宽度;展开恢复上限 + setMaximumWidth(collapsed_ ? 16 : 316); +} + +} // namespace geopro::app diff --git a/src/app/panels/columns/ColumnDrawer.hpp b/src/app/panels/columns/ColumnDrawer.hpp new file mode 100644 index 0000000..d45c84d --- /dev/null +++ b/src/app/panels/columns/ColumnDrawer.hpp @@ -0,0 +1,34 @@ +#pragma once +#include + +class QPushButton; + +namespace geopro::app { + +class Column3DDataset; +class Column2DDataset; +class Column3DAnalysis; + +// VTK视图左侧内嵌抽屉:三 tab(三维数据集/二维数据集/三维分析) + 折叠开关。 +class ColumnDrawer : public QWidget { + Q_OBJECT +public: + explicit ColumnDrawer(QWidget* parent = nullptr); + + Column3DDataset* col3D() const { return col3D_; } + Column2DDataset* col2D() const { return col2D_; } + Column3DAnalysis* colAnalysis() const { return colAnalysis_; } + +public slots: + void toggleCollapsed(); + +private: + Column3DDataset* col3D_ = nullptr; + Column2DDataset* col2D_ = nullptr; + Column3DAnalysis* colAnalysis_ = nullptr; + QWidget* body_ = nullptr; // QTabWidget,折叠时隐藏 + QPushButton* toggleBtn_ = nullptr; + bool collapsed_ = false; +}; + +} // namespace geopro::app