feat/3d-radar-volume-ingest #9
|
|
@ -607,10 +607,15 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
// 后下发控制器(setCheckedDatasets 全量 diff,须并集;否则一栏勾选会清掉另一栏的图元)。
|
// 后下发控制器(setCheckedDatasets 全量 diff,须并集;否则一栏勾选会清掉另一栏的图元)。
|
||||||
auto checkedProfiles = std::make_shared<QStringList>();
|
auto checkedProfiles = std::make_shared<QStringList>();
|
||||||
auto checkedAnalysis = std::make_shared<QStringList>();
|
auto checkedAnalysis = std::make_shared<QStringList>();
|
||||||
auto pushChecked = [sceneCtrl, checkedProfiles, checkedAnalysis]() {
|
// 引导层(emptyState)隐藏器:emptyState 在后文(~1390)才创建,故用可后置赋值的回调转发,
|
||||||
|
// 让「三维分析栏勾选(体/切片)」这条渲染路径也能隐藏不透明引导层——否则它盖住已渲染的体
|
||||||
|
// (雷达体由分析栏勾选触发渲染,但旧逻辑只在对象树勾选时隐藏引导层 → 体被盖住看不到)。
|
||||||
|
auto setSceneEmptyVisible = std::make_shared<std::function<void(bool)>>();
|
||||||
|
auto pushChecked = [sceneCtrl, checkedProfiles, checkedAnalysis, setSceneEmptyVisible]() {
|
||||||
QStringList all = *checkedProfiles;
|
QStringList all = *checkedProfiles;
|
||||||
all += *checkedAnalysis;
|
all += *checkedAnalysis;
|
||||||
sceneCtrl->setCheckedDatasets(all);
|
sceneCtrl->setCheckedDatasets(all);
|
||||||
|
if (*setSceneEmptyVisible) (*setSceneEmptyVisible)(all.isEmpty()); // 场景有内容→隐藏引导层
|
||||||
};
|
};
|
||||||
|
|
||||||
// ── VTK 视图切片右键菜单(设计 §2.3)──────────────────────────────────────
|
// ── VTK 视图切片右键菜单(设计 §2.3)──────────────────────────────────────
|
||||||
|
|
@ -1433,6 +1438,8 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
// 引导层定位后,把工具条与提示浮层 raise 到其上 → 工具条永在最上层(修:缩小渲染区时引导层挡工具条)。
|
// 引导层定位后,把工具条与提示浮层 raise 到其上 → 工具条永在最上层(修:缩小渲染区时引导层挡工具条)。
|
||||||
emptyCentering->setRaiseAfter({viewToolbar, anomalyHint, elevHint});
|
emptyCentering->setRaiseAfter({viewToolbar, anomalyHint, elevHint});
|
||||||
emptyCentering->reposition();
|
emptyCentering->reposition();
|
||||||
|
// 引导层隐藏器就位(见 pushChecked 处声明):场景(剖面∪三维分析)有勾选 → 隐藏不透明引导层、露出渲染。
|
||||||
|
*setSceneEmptyVisible = [emptyState](bool empty) { emptyState->setVisible(empty); };
|
||||||
|
|
||||||
auto* vtkDock = new ads::CDockWidget(QStringLiteral("VTK视图"));
|
auto* vtkDock = new ads::CDockWidget(QStringLiteral("VTK视图"));
|
||||||
vtkDock->setWidget(centerWidget);
|
vtkDock->setWidget(centerWidget);
|
||||||
|
|
@ -1606,10 +1613,11 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
auto generation = std::make_shared<unsigned long long>(0);
|
auto generation = std::make_shared<unsigned long long>(0);
|
||||||
QObject::connect(
|
QObject::connect(
|
||||||
objectTree, &geopro::app::ObjectTreePanel::checkedSourcesChanged, &window,
|
objectTree, &geopro::app::ObjectTreePanel::checkedSourcesChanged, &window,
|
||||||
[&projectRepo, &nav, drawer, emptyState, generation, lastSourceRows,
|
[&projectRepo, &nav, drawer, emptyState, generation, lastSourceRows, checkedAnalysis,
|
||||||
refreshAnalysis](const QList<geopro::data::DataSource>& sources) {
|
refreshAnalysis](const QList<geopro::data::DataSource>& sources) {
|
||||||
const unsigned long long myGen = ++(*generation);
|
const unsigned long long myGen = ++(*generation);
|
||||||
emptyState->setVisible(sources.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染
|
// 引导层隐藏 = 对象树无源 且 三维分析栏也无勾选(否则取消勾选对象树会盖住仍在渲染的雷达体)。
|
||||||
|
emptyState->setVisible(sources.isEmpty() && checkedAnalysis->isEmpty());
|
||||||
if (sources.isEmpty()) {
|
if (sources.isEmpty()) {
|
||||||
*lastSourceRows = {};
|
*lastSourceRows = {};
|
||||||
refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D
|
refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue