fix(radar): 三维分析栏勾选(体/切片)隐藏不透明引导层,露出渲染
根因:中央引导层 emptyState(不透明 QFrame, background=canvas/bg)只在 objectTree.checkedSourcesChanged(对象树测线勾选)时隐藏(main.cpp:1612)。 雷达体由三维分析栏(CategoryAnalysisTab)勾选触发渲染——日志确认 addVolume radar-1 已渲染——但该路径不碰 emptyState(因 emptyState 在 pushChecked 之后 才声明,分析渲染路径拿不到它),引导层不隐藏 → 盖住已渲染的体,用户只见 "勾选左侧数据集开始渲染"占位文本。 修复:用可后置赋值的回调把引导层隐藏接进 pushChecked(剖面∪三维分析 并集), 场景有勾选内容即隐藏;对象树隐藏条件并入 checkedAnalysis(取消勾选对象树不再 盖住仍渲染的雷达体)。
This commit is contained in:
parent
63ab099f76
commit
cda84adcee
|
|
@ -607,10 +607,15 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
// 后下发控制器(setCheckedDatasets 全量 diff,须并集;否则一栏勾选会清掉另一栏的图元)。
|
||||
auto checkedProfiles = 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;
|
||||
all += *checkedAnalysis;
|
||||
sceneCtrl->setCheckedDatasets(all);
|
||||
if (*setSceneEmptyVisible) (*setSceneEmptyVisible)(all.isEmpty()); // 场景有内容→隐藏引导层
|
||||
};
|
||||
|
||||
// ── VTK 视图切片右键菜单(设计 §2.3)──────────────────────────────────────
|
||||
|
|
@ -1433,6 +1438,8 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
// 引导层定位后,把工具条与提示浮层 raise 到其上 → 工具条永在最上层(修:缩小渲染区时引导层挡工具条)。
|
||||
emptyCentering->setRaiseAfter({viewToolbar, anomalyHint, elevHint});
|
||||
emptyCentering->reposition();
|
||||
// 引导层隐藏器就位(见 pushChecked 处声明):场景(剖面∪三维分析)有勾选 → 隐藏不透明引导层、露出渲染。
|
||||
*setSceneEmptyVisible = [emptyState](bool empty) { emptyState->setVisible(empty); };
|
||||
|
||||
auto* vtkDock = new ads::CDockWidget(QStringLiteral("VTK视图"));
|
||||
vtkDock->setWidget(centerWidget);
|
||||
|
|
@ -1606,10 +1613,11 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
auto generation = std::make_shared<unsigned long long>(0);
|
||||
QObject::connect(
|
||||
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) {
|
||||
const unsigned long long myGen = ++(*generation);
|
||||
emptyState->setVisible(sources.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染
|
||||
// 引导层隐藏 = 对象树无源 且 三维分析栏也无勾选(否则取消勾选对象树会盖住仍在渲染的雷达体)。
|
||||
emptyState->setVisible(sources.isEmpty() && checkedAnalysis->isEmpty());
|
||||
if (sources.isEmpty()) {
|
||||
*lastSourceRows = {};
|
||||
refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D
|
||||
|
|
|
|||
Loading…
Reference in New Issue