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
3 changed files with 87 additions and 0 deletions
Showing only changes of commit d81494fd5e - Show all commits

View File

@ -53,6 +53,7 @@ add_executable(geopro_desktop WIN32
panels/columns/Column2DDataset.cpp panels/columns/Column2DDataset.cpp
panels/columns/Column3DDataset.cpp panels/columns/Column3DDataset.cpp
panels/columns/Column3DAnalysis.cpp panels/columns/Column3DAnalysis.cpp
panels/columns/ColumnDrawer.cpp
panels/AnomalyTablePanel.cpp panels/AnomalyTablePanel.cpp
panels/LoadingOverlay.cpp panels/LoadingOverlay.cpp
panels/DatasetDetailPage.cpp panels/DatasetDetailPage.cpp

View File

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

View File

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