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
1 changed files with 23 additions and 0 deletions
Showing only changes of commit 6edfad9a2f - Show all commits

View File

@ -138,6 +138,8 @@
#include "panels/columns/ColumnDrawer.hpp"
#include "panels/columns/CategoryAnalysisTab.hpp"
#include "panels/columns/CategorySection.hpp"
#include "VtkViewToolbar.hpp"
#include "AxesSettingsDialog.hpp"
#include "panels/columns/Column3DDataset.hpp"
#include "panels/columns/Column2DDataset.hpp"
#include "panels/columns/Column3DAnalysis.hpp"
@ -362,10 +364,12 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
// 左侧内嵌三栏抽屉(自带折叠按钮)+ 右侧 GL 画布,水平并列(非 GL 覆盖层,避免 z-order/圆角伪影)。
auto* drawer = new geopro::app::ColumnDrawer(centerWidget);
auto* viewToolbar = new geopro::app::VtkViewToolbar(centerWidget); // VTK 画布全局视图控制竖排工具条
auto* viewRow = new QHBoxLayout();
viewRow->setContentsMargins(0, 0, 0, 0);
viewRow->setSpacing(0);
viewRow->addWidget(drawer); // 左侧抽屉(自带折叠按钮)
viewRow->addWidget(viewToolbar); // 画布工具条(竖排:设置/前后上下左右/缩放复位)
viewRow->addWidget(vtkWidget, 1); // 右侧 GL 画布
centerLayout->addWidget(viewHeader);
centerLayout->addLayout(viewRow, 1);
@ -658,6 +662,25 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
&geopro::controller::VtkSceneController::zoomOut);
QObject::connect(c3, &geopro::app::Column3DDataset::fitRequested, sceneCtrl,
&geopro::controller::VtkSceneController::fit);
// ── VTK 画布工具条Task 12 §9全局视图控制 → sceneCtrl ──────────────────
QObject::connect(viewToolbar, &geopro::app::VtkViewToolbar::viewRequested, sceneCtrl,
&geopro::controller::VtkSceneController::applyView);
QObject::connect(viewToolbar, &geopro::app::VtkViewToolbar::zoomInRequested, sceneCtrl,
&geopro::controller::VtkSceneController::zoomIn);
QObject::connect(viewToolbar, &geopro::app::VtkViewToolbar::zoomOutRequested, sceneCtrl,
&geopro::controller::VtkSceneController::zoomOut);
QObject::connect(viewToolbar, &geopro::app::VtkViewToolbar::fitRequested, sceneCtrl,
&geopro::controller::VtkSceneController::fit);
QObject::connect(viewToolbar, &geopro::app::VtkViewToolbar::axesSettingsRequested, &window,
[&window, sceneCtrl]() {
geopro::app::AxesSettingsDialog dlg({}, {}, {}, &window);
if (dlg.exec() != QDialog::Accepted) return;
const bool anyShow = dlg.x().show || dlg.y().show || dlg.z().show;
sceneCtrl->setAxesMode(anyShow ? geopro::controller::AxesMode::Standard
: geopro::controller::AxesMode::None);
// per-axis min/max 范围待 VtkSceneController 加坐标轴范围 API 后接入。
});
// 三维数据集栏勾选(反演剖面)→ 并入渲染勾选集(剖面走帘面路径)。
QObject::connect(c3, &geopro::app::Column3DDataset::checkedDatasetsChanged, sceneCtrl,
[checkedProfiles, pushChecked](const QStringList& ids) {