#pragma once #include #include "DatasetDetailController.hpp" namespace geopro::app { class RawDataChartView; class GridDataChartView; class LoadingOverlay; // 单个数据集详情页:下划线页签「原数据 / 网格数据」+ 右侧「导出」操作。 // 内部分别由 RawDataChartView / GridDataChartView 实现各自三层布局。 class DatasetDetailPage : public QWidget { Q_OBJECT public: explicit DatasetDetailPage(QWidget* parent = nullptr); void setData(const geopro::controller::DatasetDetailController::ChartData& d); // 网格数据到达(懒加载结果)→ 下发给 GridDataChartView 并标记已加载。 void setGridData(const geopro::controller::DatasetDetailController::GridData& d); // 网格懒加载进行中(true)/结束(false)时切换遮罩显隐。 void setGridLoading(bool on); QString dsId() const { return dsId_; } signals: // 「网格数据」页签首次激活且本页网格数据未加载 → 请求懒加载。 void gridDataNeeded(const QString& dsId, const QString& ddCode); private: QString dsId_; QString ddCode_; bool gridRequested_ = false; // 已请求过(避免重复发信号) RawDataChartView* rawView_; GridDataChartView* gridView_; LoadingOverlay* gridOverlay_; // 网格懒加载期间覆盖 gridView_ 的遮罩 }; } // namespace geopro::app