#ifndef QCONFIGMANAGER_H #define QCONFIGMANAGER_H #include #include #include #include #include #include #include #include #include // 配置分类 enum class ConfigCategory { System, // 系统配置 Connection, // 连接配置 Data, // 数据配置 Performance, // 性能配置 Monitoring, // 监控配置 Security, // 安全配置 User // 用户配置 }; // 配置项元数据 struct ConfigItemMeta { QString key; QString displayName; QString description; QVariant defaultValue; QVariant minValue; QVariant maxValue; QStringList options; // 对于枚举类型 bool requiresRestart = false; bool advanced = false; ConfigItemMeta(const QString& k, const QString& name, const QString& desc, const QVariant& def, const QVariant& min = QVariant(), const QVariant& max = QVariant(), bool restart = false, bool adv = false) : key(k), displayName(name), description(desc), defaultValue(def), minValue(min), maxValue(max), requiresRestart(restart), advanced(adv) {} }; // 配置变更记录 struct ConfigChangeRecord { QString key; QVariant oldValue; QVariant newValue; QDateTime timestamp; QString user; QString reason; ConfigChangeRecord(const QString& k, const QVariant& oldVal, const QVariant& newVal, const QString& u = "system", const QString& r = "") : key(k), oldValue(oldVal), newValue(newVal), timestamp(QDateTime::currentDateTime()), user(u), reason(r) {} }; class QConfigManager : public QObject { Q_OBJECT public: static QConfigManager* instance(); // 配置管理 void setValue(const QString& key, const QVariant& value, const QString& user = "system", const QString& reason = ""); QVariant getValue(const QString& key, const QVariant& defaultValue = QVariant()) const; bool contains(const QString& key) const; void remove(const QString& key); // 批量操作 void setValues(const QMap& values, const QString& user = "system", const QString& reason = ""); QMap getValues(const QStringList& keys) const; // 类型安全访问 QString getString(const QString& key, const QString& defaultValue = "") const; int getInt(const QString& key, int defaultValue = 0) const; double getDouble(const QString& key, double defaultValue = 0.0) const; bool getBool(const QString& key, bool defaultValue = false) const; QJsonArray getArray(const QString& key, const QJsonArray& defaultValue = QJsonArray()) const; QJsonObject getObject(const QString& key, const QJsonObject& defaultValue = QJsonObject()) const; // 配置分类管理 void setCategoryValue(ConfigCategory category, const QString& key, const QVariant& value); QVariant getCategoryValue(ConfigCategory category, const QString& key, const QVariant& defaultValue = QVariant()) const; QMap getCategoryValues(ConfigCategory category) const; // 配置元数据 void registerConfigItem(const ConfigItemMeta& meta); ConfigItemMeta getConfigMeta(const QString& key) const; QList getAllConfigMeta() const; QList getCategoryConfigMeta(ConfigCategory category) const; // 持久化 void loadFromFile(const QString& filePath = ""); void saveToFile(const QString& filePath = ""); void loadDefaults(); void exportConfig(const QString& filePath); void importConfig(const QString& filePath); // 配置历史 QList getChangeHistory(const QString& key = "", int limit = 100) const; void clearHistory(const QString& key = ""); bool rollback(const QString& key, int steps = 1); // 配置验证 bool validateValue(const QString& key, const QVariant& value) const; QVariant sanitizeValue(const QString& key, const QVariant& value) const; // 系统配置组(常用配置) // 连接配置 void setServerAddress(const QString& address); QString getServerAddress() const; void setServerPort(int port); int getServerPort() const; void setConnectionTimeout(int timeoutMs); int getConnectionTimeout() const; // 数据配置 void setBufferSize(int size); int getBufferSize() const; void setMaxPacketsPerSecond(int rate); int getMaxPacketsPerSecond() const; void setDataRetentionDays(int days); int getDataRetentionDays() const; // 性能配置 void setThreadPoolSize(int size); int getThreadPoolSize() const; void setCacheSize(int size); int getCacheSize() const; void setProcessingBatchSize(int size); int getProcessingBatchSize() const; // 监控配置 void setMonitorInterval(int intervalMs); int getMonitorInterval() const; void setAlertEnabled(bool enabled); bool isAlertEnabled() const; void setLogLevel(int level); int getLogLevel() const; signals: void configChanged(const QString& key, const QVariant& oldValue, const QVariant& newValue); void configLoaded(); void configSaved(); void configError(const QString& error); void configValidationFailed(const QString& key, const QVariant& value, const QString& reason); private: explicit QConfigManager(QObject *parent = nullptr); ~QConfigManager(); void initializeDefaults(); void registerSystemConfigItems(); QString getCategoryPrefix(ConfigCategory category) const; QString getFullKey(ConfigCategory category, const QString& key) const; void addChangeRecord(const ConfigChangeRecord& record); // 配置存储 mutable QMutex m_mutex; QMap m_config; QMap m_configMeta; QList m_changeHistory; // 文件管理 QString m_configPath; QTimer* m_autoSaveTimer; bool m_autoSaveEnabled = true; // 系统配置默认值 struct SystemDefaults { QString serverAddress = "127.0.0.1"; int serverPort = 8000; int connectionTimeout = 30000; int bufferSize = 10000; int maxPacketsPerSecond = 1000; int dataRetentionDays = 30; int threadPoolSize = 4; int cacheSize = 1000; int processingBatchSize = 100; int monitorInterval = 5000; bool alertEnabled = true; int logLevel = 2; // INFO level } m_defaults; }; #endif // QCONFIGMANAGER_H