refactor/pure-qt-ui #3
|
|
@ -31,7 +31,9 @@
|
||||||
#include <QEasingCurve>
|
#include <QEasingCurve>
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
#include <QButtonGroup>
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
|
#include <QHBoxLayout>
|
||||||
#include <QGraphicsOpacityEffect>
|
#include <QGraphicsOpacityEffect>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QModelIndex>
|
#include <QModelIndex>
|
||||||
|
|
@ -67,6 +69,7 @@
|
||||||
#include <ElaDef.h>
|
#include <ElaDef.h>
|
||||||
#include <ElaListView.h>
|
#include <ElaListView.h>
|
||||||
#include <ElaTheme.h>
|
#include <ElaTheme.h>
|
||||||
|
#include <ElaToolButton.h>
|
||||||
#include <ElaWindow.h>
|
#include <ElaWindow.h>
|
||||||
|
|
||||||
#include "model/ColorScale.hpp"
|
#include "model/ColorScale.hpp"
|
||||||
|
|
@ -324,16 +327,24 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
centerLayout->setContentsMargins(0, 0, 0, 0);
|
centerLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
centerLayout->setSpacing(0);
|
centerLayout->setSpacing(0);
|
||||||
|
|
||||||
// 工具条:「二维地图/三维视图」两个互斥可勾选 action。切换=按当前勾选集重建对应内容。默认二维地图。
|
// 工具条:「二维地图/三维视图」两个互斥可勾选按钮(Fluent ElaToolButton)。默认二维地图。
|
||||||
auto* viewToolBar = new QToolBar();
|
auto* viewToolBar = new QWidget();
|
||||||
auto* viewGroup = new QActionGroup(viewToolBar);
|
auto* viewBarLay = new QHBoxLayout(viewToolBar);
|
||||||
|
viewBarLay->setContentsMargins(8, 6, 8, 6);
|
||||||
|
viewBarLay->setSpacing(6);
|
||||||
|
auto* viewGroup = new QButtonGroup(viewToolBar);
|
||||||
viewGroup->setExclusive(true);
|
viewGroup->setExclusive(true);
|
||||||
auto* act2D = viewToolBar->addAction(QStringLiteral("二维地图"));
|
auto* act2D = new ElaToolButton(viewToolBar);
|
||||||
auto* act3D = viewToolBar->addAction(QStringLiteral("三维视图"));
|
act2D->setText(QStringLiteral("二维地图"));
|
||||||
act2D->setCheckable(true);
|
act2D->setCheckable(true);
|
||||||
|
auto* act3D = new ElaToolButton(viewToolBar);
|
||||||
|
act3D->setText(QStringLiteral("三维视图"));
|
||||||
act3D->setCheckable(true);
|
act3D->setCheckable(true);
|
||||||
viewGroup->addAction(act2D);
|
viewGroup->addButton(act2D);
|
||||||
viewGroup->addAction(act3D);
|
viewGroup->addButton(act3D);
|
||||||
|
viewBarLay->addWidget(act2D);
|
||||||
|
viewBarLay->addWidget(act3D);
|
||||||
|
viewBarLay->addStretch();
|
||||||
act2D->setChecked(true); // 默认二维地图
|
act2D->setChecked(true); // 默认二维地图
|
||||||
centerLayout->addWidget(viewToolBar);
|
centerLayout->addWidget(viewToolBar);
|
||||||
centerLayout->addWidget(vtkWidget, 1);
|
centerLayout->addWidget(vtkWidget, 1);
|
||||||
|
|
@ -462,27 +473,42 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
detailLayout->setContentsMargins(0, 0, 0, 0);
|
detailLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
detailLayout->setSpacing(0);
|
detailLayout->setSpacing(0);
|
||||||
|
|
||||||
// 工具条对齐原型:「原数据 | 网格数据」互斥 +「显示异常」开关。
|
// 工具条对齐原型:「原数据 | 网格数据」互斥 +「显示异常/电极/等值线」开关(Fluent ElaToolButton)。
|
||||||
auto* detailToolBar = new QToolBar();
|
auto* detailToolBar = new QWidget();
|
||||||
auto* detailGroup = new QActionGroup(detailToolBar);
|
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);
|
detailGroup->setExclusive(true);
|
||||||
auto* actScatter = detailToolBar->addAction(QStringLiteral("原数据"));
|
auto* actScatter = makeBarBtn(QStringLiteral("原数据"), true);
|
||||||
auto* actSection = detailToolBar->addAction(QStringLiteral("网格数据"));
|
auto* actSection = makeBarBtn(QStringLiteral("网格数据"), true);
|
||||||
actScatter->setCheckable(true);
|
detailGroup->addButton(actScatter);
|
||||||
actSection->setCheckable(true);
|
detailGroup->addButton(actSection);
|
||||||
detailGroup->addAction(actScatter);
|
detailBarLay->addWidget(actScatter);
|
||||||
detailGroup->addAction(actSection);
|
detailBarLay->addWidget(actSection);
|
||||||
actSection->setChecked(true); // 默认网格数据 (#18)
|
actSection->setChecked(true); // 默认网格数据 (#18)
|
||||||
detailToolBar->addSeparator();
|
auto* barSep = new QFrame(detailToolBar);
|
||||||
auto* actShowAnomaly = detailToolBar->addAction(QStringLiteral("显示异常"));
|
barSep->setFrameShape(QFrame::VLine);
|
||||||
actShowAnomaly->setCheckable(true);
|
barSep->setObjectName(QStringLiteral("topDivider"));
|
||||||
|
detailBarLay->addSpacing(4);
|
||||||
|
detailBarLay->addWidget(barSep);
|
||||||
|
detailBarLay->addSpacing(4);
|
||||||
|
auto* actShowAnomaly = makeBarBtn(QStringLiteral("显示异常"), true);
|
||||||
actShowAnomaly->setChecked(true); // 默认显示异常(对齐原型 ☑显示异常)
|
actShowAnomaly->setChecked(true); // 默认显示异常(对齐原型 ☑显示异常)
|
||||||
auto* actShowElectrodes = detailToolBar->addAction(QStringLiteral("显示电极"));
|
auto* actShowElectrodes = makeBarBtn(QStringLiteral("显示电极"), true);
|
||||||
actShowElectrodes->setCheckable(true);
|
|
||||||
actShowElectrodes->setChecked(true); // 默认显示电极 ▼(对齐原型)
|
actShowElectrodes->setChecked(true); // 默认显示电极 ▼(对齐原型)
|
||||||
auto* actShowContour = detailToolBar->addAction(QStringLiteral("显示等值线"));
|
auto* actShowContour = makeBarBtn(QStringLiteral("显示等值线"), true);
|
||||||
actShowContour->setCheckable(true);
|
|
||||||
actShowContour->setChecked(true); // 默认显示等值线(对齐原型)
|
actShowContour->setChecked(true); // 默认显示等值线(对齐原型)
|
||||||
|
detailBarLay->addWidget(actShowAnomaly);
|
||||||
|
detailBarLay->addWidget(actShowElectrodes);
|
||||||
|
detailBarLay->addWidget(actShowContour);
|
||||||
|
detailBarLay->addStretch();
|
||||||
detailLayout->addWidget(detailToolBar);
|
detailLayout->addWidget(detailToolBar);
|
||||||
detailLayout->addWidget(detailWidget, 1);
|
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, rebuildDetail]() {
|
||||||
*detailMode = DetailMode::Section18;
|
*detailMode = DetailMode::Section18;
|
||||||
rebuildDetail();
|
rebuildDetail();
|
||||||
});
|
});
|
||||||
QObject::connect(actScatter, &QAction::triggered, detailWidget,
|
QObject::connect(actScatter, &QAbstractButton::clicked, detailWidget,
|
||||||
[detailMode, rebuildDetail]() {
|
[detailMode, rebuildDetail]() {
|
||||||
*detailMode = DetailMode::Scatter17;
|
*detailMode = DetailMode::Scatter17;
|
||||||
rebuildDetail();
|
rebuildDetail();
|
||||||
});
|
});
|
||||||
|
|
||||||
// ──「显示异常 / 显示电极 / 显示等值线」开关:切换叠加 → 重建数据详情 ──
|
// ──「显示异常 / 显示电极 / 显示等值线」开关:切换叠加 → 重建数据详情 ──
|
||||||
QObject::connect(actShowAnomaly, &QAction::toggled, detailWidget,
|
QObject::connect(actShowAnomaly, &QAbstractButton::toggled, detailWidget,
|
||||||
[showAnomalies, rebuildDetail](bool on) {
|
[showAnomalies, rebuildDetail](bool on) {
|
||||||
*showAnomalies = on;
|
*showAnomalies = on;
|
||||||
rebuildDetail();
|
rebuildDetail();
|
||||||
});
|
});
|
||||||
QObject::connect(actShowElectrodes, &QAction::toggled, detailWidget,
|
QObject::connect(actShowElectrodes, &QAbstractButton::toggled, detailWidget,
|
||||||
[showElectrodes, rebuildDetail](bool on) {
|
[showElectrodes, rebuildDetail](bool on) {
|
||||||
*showElectrodes = on;
|
*showElectrodes = on;
|
||||||
rebuildDetail();
|
rebuildDetail();
|
||||||
});
|
});
|
||||||
QObject::connect(actShowContour, &QAction::toggled, detailWidget,
|
QObject::connect(actShowContour, &QAbstractButton::toggled, detailWidget,
|
||||||
[showContour, rebuildDetail](bool on) {
|
[showContour, rebuildDetail](bool on) {
|
||||||
*showContour = on;
|
*showContour = on;
|
||||||
rebuildDetail();
|
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, rebuildCentral, showLayerPanel]() {
|
||||||
*viewMode = ViewMode::Map2D;
|
*viewMode = ViewMode::Map2D;
|
||||||
showLayerPanel(false);
|
showLayerPanel(false);
|
||||||
rebuildCentral();
|
rebuildCentral();
|
||||||
});
|
});
|
||||||
QObject::connect(act3D, &QAction::triggered, vtkWidget,
|
QObject::connect(act3D, &QAbstractButton::clicked, vtkWidget,
|
||||||
[viewMode, rebuildCentral, showLayerPanel]() {
|
[viewMode, rebuildCentral, showLayerPanel]() {
|
||||||
*viewMode = ViewMode::View3D;
|
*viewMode = ViewMode::View3D;
|
||||||
showLayerPanel(true);
|
showLayerPanel(true);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue