64 lines
2.7 KiB
C++
64 lines
2.7 KiB
C++
#pragma once
|
||
#include <QWidget>
|
||
#include "model/detail/DetailPayloads.hpp"
|
||
#include "panels/chart/ColorMapService.hpp"
|
||
#include "panels/chart/IDetailView.hpp"
|
||
|
||
class QComboBox;
|
||
class QVBoxLayout;
|
||
class QwtPlot;
|
||
class QwtPlotRescaler;
|
||
|
||
namespace geopro::app {
|
||
|
||
class ColorBarWidget;
|
||
class ScatterPlotItem;
|
||
class ScatterHoverTip;
|
||
|
||
// 原数据图表视图:工具条 + QwtPlot(x 轴顶部、Panner/Magnifier)+ 独立色阶条。
|
||
class RawDataChartView : public QWidget, public IDetailView {
|
||
Q_OBJECT
|
||
public:
|
||
explicit RawDataChartView(QWidget* parent = nullptr);
|
||
~RawDataChartView() override;
|
||
|
||
// 渲染散点载荷(解包后调内部渲染;渲染代码不变)。
|
||
void setData(const geopro::core::ScatterPayload& p);
|
||
|
||
// IDetailView:壳/工厂统一入口。坏/空 variant → 保持空态不崩。
|
||
QWidget* widget() override { return this; }
|
||
void setPayload(const QVariant& payload) override;
|
||
|
||
// 供外部访问(已不再是占位,保留兼容接口返回 plot_)
|
||
QWidget* plotArea() const;
|
||
|
||
private:
|
||
// 工具条按载荷类型二选一:反演原数据 = ctor 默认建的 inversion 工具条;measurement =
|
||
// 首个非空 ScatterToolbarConf 到来时建一次并替换(视觉 1:1)。建好后缓存,后续 setData 复用。
|
||
void buildMeasurementToolbar(const geopro::core::ScatterToolbarConf& conf);
|
||
// 按当前 x/y 下拉选择,从备选列重绘散点(本地,无网络)。code 为下拉项 fieldCode。
|
||
void replotForAxis();
|
||
// “暂未实现”轻提示(占位按钮/下拉点击)。
|
||
void showNotImplemented(QWidget* anchor);
|
||
|
||
geopro::core::ScatterPayload data_;
|
||
QwtPlot* plot_;
|
||
QwtPlotRescaler* rescaler_ = nullptr; // 锁定 x:y 真实比尺
|
||
ColorBarWidget* colorBar_; // 底部横条(反演原数据)
|
||
ColorBarWidget* colorBarV_; // 右侧竖条(measurement)
|
||
QComboBox* chartTypeCombo_ = nullptr;
|
||
|
||
QVBoxLayout* rootLay_ = nullptr; // 顶层竖向布局(用于替换工具条)
|
||
QWidget* toolbar_ = nullptr; // 当前工具条(inversion 或 measurement)
|
||
bool measurementToolbar_ = false; // 已建 measurement 工具条
|
||
QComboBox* xCombo_ = nullptr; // measurement x 下拉
|
||
QComboBox* yCombo_ = nullptr; // measurement y 下拉
|
||
|
||
// 使用 unique_ptr 管理生命周期;attach 后 QwtPlot 接管绘制,但我们仍持有指针
|
||
ColorMapService* colorSvc_ = nullptr; // heap,由 setData 重建
|
||
ScatterPlotItem* scatterItem_ = nullptr;
|
||
ScatterHoverTip* hoverTip_ = nullptr; // 散点 hover 提示(QObject,this 持有)
|
||
};
|
||
|
||
} // namespace geopro::app
|