#pragma once #include #include "repo/RepoTypes.hpp" class QLabel; namespace geopro::app { class KeyValueView; // 属性面板用的只读表单容器:滚动区 + 卡片,内嵌唯一渲染器 KeyValueView(§6.4)。 // 对象属性 / 数据集属性面板共用。数据详情对话框不经本类,直接用 KeyValueView // (见 formkit::buildDetailDialog),但二者共享同一渲染器,外观一致。 class DynamicFormView : public QWidget { public: explicit DynamicFormView(QWidget* parent = nullptr); void setForm(const geopro::data::DynamicForm& form); void showMessage(const QString& message); // 空/错占位 private: KeyValueView* kv_ = nullptr; QLabel* placeholder_ = nullptr; }; } // namespace geopro::app