geopro/src/app/panels/chart/RawDataChartView.hpp

64 lines
2.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
// 原数据图表视图:工具条 + QwtPlotx 轴顶部、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 提示QObjectthis 持有)
};
} // namespace geopro::app