feat(ela): 视图/详情工具条 → ElaToolButton 行(替 QToolBar+QAction)
- 视图工具条(二维地图/三维视图): QToolBar+QActionGroup → QWidget+QHBoxLayout+ElaToolButton+QButtonGroup(互斥) - 详情工具条(原数据/网格数据 互斥 + 显示异常/电极/等值线 开关): 同上 + QFrame 分隔 - 连接: QAction::triggered→QAbstractButton::clicked, QAction::toggled→QAbstractButton::toggled; 视图模式/详情模式/叠加显隐 行为保持 - 注: 工具条交互(2D/3D 切换/详情模式/三个显隐开关)为活逻辑, 需运行验证
This commit is contained in:
parent
b6e0142d06
commit
3aa4e1bfe2
|
|
@ -31,7 +31,9 @@
|
|||
#include <QEasingCurve>
|
||||
#include <QEvent>
|
||||
#include <QFile>
|
||||
#include <QButtonGroup>
|
||||
#include <QFrame>
|
||||
#include <QHBoxLayout>
|
||||
#include <QGraphicsOpacityEffect>
|
||||
#include <QLabel>
|
||||
#include <QModelIndex>
|
||||
|
|
@ -67,6 +69,7 @@
|
|||
#include <ElaDef.h>
|
||||
#include <ElaListView.h>
|
||||
#include <ElaTheme.h>
|
||||
#include <ElaToolButton.h>
|
||||
#include <ElaWindow.h>
|
||||
|
||||
#include "model/ColorScale.hpp"
|
||||
|
|
@ -324,16 +327,24 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
centerLayout->setContentsMargins(0, 0, 0, 0);
|
||||
centerLayout->setSpacing(0);
|
||||
|
||||
// 工具条:「二维地图/三维视图」两个互斥可勾选 action。切换=按当前勾选集重建对应内容。默认二维地图。
|
||||
auto* viewToolBar = new QToolBar();
|
||||
auto* viewGroup = new QActionGroup(viewToolBar);
|
||||
// 工具条:「二维地图/三维视图」两个互斥可勾选按钮(Fluent ElaToolButton)。默认二维地图。
|
||||
auto* viewToolBar = new QWidget();
|
||||
auto* viewBarLay = new QHBoxLayout(viewToolBar);
|
||||
viewBarLay->setContentsMargins(8, 6, 8, 6);
|
||||
viewBarLay->setSpacing(6);
|
||||
auto* viewGroup = new QButtonGroup(viewToolBar);
|
||||
viewGroup->setExclusive(true);
|
||||
auto* act2D = viewToolBar->addAction(QStringLiteral("二维地图"));
|
||||
auto* act3D = viewToolBar->addAction(QStringLiteral("三维视图"));
|
||||
auto* act2D = new ElaToolButton(viewToolBar);
|
||||
act2D->setText(QStringLiteral("二维地图"));
|
||||
act2D->setCheckable(true);
|
||||
auto* act3D = new ElaToolButton(viewToolBar);
|
||||
act3D->setText(QStringLiteral("三维视图"));
|
||||
act3D->setCheckable(true);
|
||||
viewGroup->addAction(act2D);
|
||||
viewGroup->addAction(act3D);
|
||||
viewGroup->addButton(act2D);
|
||||
viewGroup->addButton(act3D);
|
||||
viewBarLay->addWidget(act2D);
|
||||
viewBarLay->addWidget(act3D);
|
||||
viewBarLay->addStretch();
|
||||
act2D->setChecked(true); // 默认二维地图
|
||||
centerLayout->addWidget(viewToolBar);
|
||||
centerLayout->addWidget(vtkWidget, 1);
|
||||
|
|
@ -462,27 +473,42 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
detailLayout->setContentsMargins(0, 0, 0, 0);
|
||||
detailLayout->setSpacing(0);
|
||||
|
||||
// 工具条对齐原型:「原数据 | 网格数据」互斥 +「显示异常」开关。
|
||||
auto* detailToolBar = new QToolBar();
|
||||
auto* detailGroup = new QActionGroup(detailToolBar);
|
||||
// 工具条对齐原型:「原数据 | 网格数据」互斥 +「显示异常/电极/等值线」开关(Fluent ElaToolButton)。
|
||||
auto* detailToolBar = new QWidget();
|
||||
auto* detailBarLay = new QHBoxLayout(detailToolBar);
|
||||
detailBarLay->setContentsMargins(8, 6, 8, 6);
|
||||
detailBarLay->setSpacing(6);
|
||||
auto makeBarBtn = [detailToolBar](const QString& text, bool checkable) {
|
||||
auto* b = new ElaToolButton(detailToolBar);
|
||||
b->setText(text);
|
||||
b->setCheckable(checkable);
|
||||
return b;
|
||||
};
|
||||
auto* detailGroup = new QButtonGroup(detailToolBar);
|
||||
detailGroup->setExclusive(true);
|
||||
auto* actScatter = detailToolBar->addAction(QStringLiteral("原数据"));
|
||||
auto* actSection = detailToolBar->addAction(QStringLiteral("网格数据"));
|
||||
actScatter->setCheckable(true);
|
||||
actSection->setCheckable(true);
|
||||
detailGroup->addAction(actScatter);
|
||||
detailGroup->addAction(actSection);
|
||||
auto* actScatter = makeBarBtn(QStringLiteral("原数据"), true);
|
||||
auto* actSection = makeBarBtn(QStringLiteral("网格数据"), true);
|
||||
detailGroup->addButton(actScatter);
|
||||
detailGroup->addButton(actSection);
|
||||
detailBarLay->addWidget(actScatter);
|
||||
detailBarLay->addWidget(actSection);
|
||||
actSection->setChecked(true); // 默认网格数据 (#18)
|
||||
detailToolBar->addSeparator();
|
||||
auto* actShowAnomaly = detailToolBar->addAction(QStringLiteral("显示异常"));
|
||||
actShowAnomaly->setCheckable(true);
|
||||
auto* barSep = new QFrame(detailToolBar);
|
||||
barSep->setFrameShape(QFrame::VLine);
|
||||
barSep->setObjectName(QStringLiteral("topDivider"));
|
||||
detailBarLay->addSpacing(4);
|
||||
detailBarLay->addWidget(barSep);
|
||||
detailBarLay->addSpacing(4);
|
||||
auto* actShowAnomaly = makeBarBtn(QStringLiteral("显示异常"), true);
|
||||
actShowAnomaly->setChecked(true); // 默认显示异常(对齐原型 ☑显示异常)
|
||||
auto* actShowElectrodes = detailToolBar->addAction(QStringLiteral("显示电极"));
|
||||
actShowElectrodes->setCheckable(true);
|
||||
auto* actShowElectrodes = makeBarBtn(QStringLiteral("显示电极"), true);
|
||||
actShowElectrodes->setChecked(true); // 默认显示电极 ▼(对齐原型)
|
||||
auto* actShowContour = detailToolBar->addAction(QStringLiteral("显示等值线"));
|
||||
actShowContour->setCheckable(true);
|
||||
auto* actShowContour = makeBarBtn(QStringLiteral("显示等值线"), true);
|
||||
actShowContour->setChecked(true); // 默认显示等值线(对齐原型)
|
||||
detailBarLay->addWidget(actShowAnomaly);
|
||||
detailBarLay->addWidget(actShowElectrodes);
|
||||
detailBarLay->addWidget(actShowContour);
|
||||
detailBarLay->addStretch();
|
||||
detailLayout->addWidget(detailToolBar);
|
||||
detailLayout->addWidget(detailWidget, 1);
|
||||
|
||||
|
|
@ -746,29 +772,29 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
});
|
||||
|
||||
// ── 数据详情工具条「反演剖面/原数据」:切模式 → 重建数据详情 ──
|
||||
QObject::connect(actSection, &QAction::triggered, detailWidget,
|
||||
QObject::connect(actSection, &QAbstractButton::clicked, detailWidget,
|
||||
[detailMode, rebuildDetail]() {
|
||||
*detailMode = DetailMode::Section18;
|
||||
rebuildDetail();
|
||||
});
|
||||
QObject::connect(actScatter, &QAction::triggered, detailWidget,
|
||||
QObject::connect(actScatter, &QAbstractButton::clicked, detailWidget,
|
||||
[detailMode, rebuildDetail]() {
|
||||
*detailMode = DetailMode::Scatter17;
|
||||
rebuildDetail();
|
||||
});
|
||||
|
||||
// ──「显示异常 / 显示电极 / 显示等值线」开关:切换叠加 → 重建数据详情 ──
|
||||
QObject::connect(actShowAnomaly, &QAction::toggled, detailWidget,
|
||||
QObject::connect(actShowAnomaly, &QAbstractButton::toggled, detailWidget,
|
||||
[showAnomalies, rebuildDetail](bool on) {
|
||||
*showAnomalies = on;
|
||||
rebuildDetail();
|
||||
});
|
||||
QObject::connect(actShowElectrodes, &QAction::toggled, detailWidget,
|
||||
QObject::connect(actShowElectrodes, &QAbstractButton::toggled, detailWidget,
|
||||
[showElectrodes, rebuildDetail](bool on) {
|
||||
*showElectrodes = on;
|
||||
rebuildDetail();
|
||||
});
|
||||
QObject::connect(actShowContour, &QAction::toggled, detailWidget,
|
||||
QObject::connect(actShowContour, &QAbstractButton::toggled, detailWidget,
|
||||
[showContour, rebuildDetail](bool on) {
|
||||
*showContour = on;
|
||||
rebuildDetail();
|
||||
|
|
@ -787,13 +813,13 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
|||
};
|
||||
|
||||
// ── 工具条「二维地图/三维视图」:切换互斥视图 → 重建内容 + 图层浮层显隐 ──
|
||||
QObject::connect(act2D, &QAction::triggered, vtkWidget,
|
||||
QObject::connect(act2D, &QAbstractButton::clicked, vtkWidget,
|
||||
[viewMode, rebuildCentral, showLayerPanel]() {
|
||||
*viewMode = ViewMode::Map2D;
|
||||
showLayerPanel(false);
|
||||
rebuildCentral();
|
||||
});
|
||||
QObject::connect(act3D, &QAction::triggered, vtkWidget,
|
||||
QObject::connect(act3D, &QAbstractButton::clicked, vtkWidget,
|
||||
[viewMode, rebuildCentral, showLayerPanel]() {
|
||||
*viewMode = ViewMode::View3D;
|
||||
showLayerPanel(true);
|
||||
|
|
|
|||
Loading…
Reference in New Issue