feat/vtk-3d-view #7
|
|
@ -35,6 +35,7 @@
|
||||||
#include <QComboBox>
|
#include <QComboBox>
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
#include <QSplitter>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QSlider>
|
#include <QSlider>
|
||||||
#include <QGraphicsOpacityEffect>
|
#include <QGraphicsOpacityEffect>
|
||||||
|
|
@ -379,14 +380,22 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
}
|
}
|
||||||
fieldDict->setArrayTypeEnum(std::move(e));
|
fieldDict->setArrayTypeEnum(std::move(e));
|
||||||
});
|
});
|
||||||
auto* viewRow = new QHBoxLayout();
|
// 左侧抽屉 | 右侧(工具条+画布)用 QSplitter,左面板可拖动改宽(不可拖没;右侧伸缩)。
|
||||||
viewRow->setContentsMargins(0, 0, 0, 0);
|
auto* split = new QSplitter(Qt::Horizontal);
|
||||||
viewRow->setSpacing(0);
|
split->setChildrenCollapsible(false);
|
||||||
viewRow->addWidget(drawer); // 左侧抽屉(自带折叠按钮)
|
split->setHandleWidth(4);
|
||||||
viewRow->addWidget(viewToolbar); // 画布工具条(竖排:设置/前后上下左右/缩放复位)
|
split->addWidget(drawer);
|
||||||
viewRow->addWidget(vtkWidget, 1); // 右侧 GL 画布
|
auto* rightWrap = new QWidget();
|
||||||
|
auto* rl = new QHBoxLayout(rightWrap);
|
||||||
|
rl->setContentsMargins(0, 0, 0, 0);
|
||||||
|
rl->setSpacing(0);
|
||||||
|
rl->addWidget(viewToolbar); // 画布工具条
|
||||||
|
rl->addWidget(vtkWidget, 1); // GL 画布
|
||||||
|
split->addWidget(rightWrap);
|
||||||
|
split->setStretchFactor(0, 0);
|
||||||
|
split->setStretchFactor(1, 1);
|
||||||
centerLayout->addWidget(viewHeader);
|
centerLayout->addWidget(viewHeader);
|
||||||
centerLayout->addLayout(viewRow, 1);
|
centerLayout->addWidget(split, 1);
|
||||||
|
|
||||||
// 3b:三维分析栏勾选的已保存切片(dd_slice) id 集合 + 调和函数。
|
// 3b:三维分析栏勾选的已保存切片(dd_slice) id 集合 + 调和函数。
|
||||||
// syncSlices:按"当前活动体 dsId"调和 InteractionManager 上显示的已保存切片——
|
// syncSlices:按"当前活动体 dsId"调和 InteractionManager 上显示的已保存切片——
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ CategoryAnalysisTab::CategoryAnalysisTab(geopro::data::DatasetFieldDictionary* d
|
||||||
auto* scroll = new QScrollArea(this);
|
auto* scroll = new QScrollArea(this);
|
||||||
scroll->setWidgetResizable(true);
|
scroll->setWidgetResizable(true);
|
||||||
scroll->setFrameShape(QFrame::NoFrame);
|
scroll->setFrameShape(QFrame::NoFrame);
|
||||||
|
scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 内容随面板宽自适应,不出横向滚动条
|
||||||
outer->addWidget(scroll, 1);
|
outer->addWidget(scroll, 1);
|
||||||
|
|
||||||
auto* content = new QWidget(scroll);
|
auto* content = new QWidget(scroll);
|
||||||
|
|
|
||||||
|
|
@ -51,8 +51,9 @@ ColumnDrawer::ColumnDrawer(QWidget* parent, geopro::data::DatasetFieldDictionary
|
||||||
root->addWidget(body_, 1);
|
root->addWidget(body_, 1);
|
||||||
root->addWidget(toggleBtn_, 0);
|
root->addWidget(toggleBtn_, 0);
|
||||||
|
|
||||||
// 展开时限宽 ~318px (300 body + 18 btn)
|
// 可调宽:min 180 / max 560(外层 QSplitter 拖动改宽)。
|
||||||
setMaximumWidth(318);
|
setMinimumWidth(180);
|
||||||
|
setMaximumWidth(560);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColumnDrawer::toggleCollapsed()
|
void ColumnDrawer::toggleCollapsed()
|
||||||
|
|
@ -61,8 +62,9 @@ void ColumnDrawer::toggleCollapsed()
|
||||||
body_->setVisible(!collapsed_);
|
body_->setVisible(!collapsed_);
|
||||||
toggleBtn_->setIcon(geopro::app::makeGlyph(collapsed_ ? Glyph::ChevronRight : Glyph::ChevronLeft,
|
toggleBtn_->setIcon(geopro::app::makeGlyph(collapsed_ ? Glyph::ChevronRight : Glyph::ChevronLeft,
|
||||||
geopro::app::tokenColor("text/secondary"), 14));
|
geopro::app::tokenColor("text/secondary"), 14));
|
||||||
// 折叠后只保留按钮宽度;展开恢复上限
|
// 折叠后只保留按钮宽度;展开恢复可调范围
|
||||||
setMaximumWidth(collapsed_ ? 18 : 318);
|
setMinimumWidth(collapsed_ ? 0 : 180);
|
||||||
|
setMaximumWidth(collapsed_ ? 18 : 560);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColumnDrawer::expand()
|
void ColumnDrawer::expand()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue