feat/vtk-3d-view #7
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 <QHBoxLayout>
|
||||
#include <QPushButton>
|
||||
#include <QTabWidget>
|
||||
|
||||
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
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
#pragma once
|
||||
#include <QWidget>
|
||||
|
||||
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
|
||||
Loading…
Reference in New Issue