#ifndef STRUCTDATASOURCE_H #define STRUCTDATASOURCE_H /** * *******结构化数据源接口****** **/ #include struct ExtraProperty; struct propertyStateInfo; struct MeasurementInfo; struct modelDataInfo; class StructDataSource : public QObject { Q_OBJECT public: StructDataSource(QObject* parent = nullptr); // 根据code获取属性 ExtraProperty* getPropertyByCode(const QString& code); // 根据tag获取属性 ExtraProperty* getPropertyByTag(const QString& tag); // 根据group获取属性列表 QVector getPropertiesByGroup(const QString& groupTag, const QString& modelName = ""); // 根据sourceType获取属性列表 QVector getPropertiesBySourceType(const QString& sourceType); // 添加或更新属性 bool addOrUpdateProperty(const ExtraProperty& prop); // 更新单个属性 bool updateProperty(const ExtraProperty& updatedProp); // 更新connect_para bool updateConnectPara(const QString& code, const QString& newConnectPara); // 批量更新 void updateProperties(const QVector& updatedProps); // 删除属性 bool removeProperty(const QString& code); // 批量删除 int removeProperties(const QVector& codes); // 保存到文件 void saveAll(); // 加载数据 void loadExtrapro(QMap vec); void loadPropertyData(QMap map); void loadMeasurementData(QMap map); // 获取所有属性的code列表 QStringList getAllCodes() const; // 获取所有属性 QVector getAllProperties() const; // 获取property数据 propertyStateInfo* getPropertyData(const ExtraProperty& prop); // 获取measurement数据 MeasurementInfo* getMeasurementData(const ExtraProperty& prop); // 验证数据 bool validateProperty(const ExtraProperty& prop); signals: void propertyUpdated(const ExtraProperty& prop, bool isNew); void propertyRemoved(const ExtraProperty& prop); void dataChanged(); public: QMap allProperties; private: QMap m_propertyData; //参量 QMap m_measurementData; //量测 }; #endif