Чтобы решить эту проблему, у меня есть библиотека файлов конфигурации, над которой я работаю уже несколько лет. Я включил это в
несколько программ и кажется довольно стабильным. Если кому-то интересно, я могу опубликовать документацию и / или исходный код Doxygen.
Вот раздел документов с обзором:
clsConfigFileBase
- базовый класс для объекта доступа к файлу конфигурации
Описание:
clsConfigFileBase
является основным механизмом для обработки файла конфигурации. Чтобы использовать конфигурационную файловую систему вы
необходимо получить класс из clsConfigFileBase
и использовать ваш производный класс для:
Определите содержимое файла конфигурации одним или несколькими из следующих способов:
ConfigValue RegisterConfigValue( QString qstrConfigValueNameIn,
QVariant::Type VariantTypeIn )
ConfigValue RegisterConfigValue( QString qstrConfigValueNameIn,
QVariant::Type VariantTypeIn, QString qstrWhatsThisTextIn )
ConfigValue RegisterConfigValue( clsConfigValueData::ConfigValueSource
ConfigValueSourceIn, QString qstrConfigValueNameIn, QVariant::Type
VariantTypeIn )
ConfigValue RegisterConfigValue( clsConfigValueData::ConfigValueSource
ConfigValueSourceIn, QString qstrConfigValueNameIn, QVariant::Type
VariantTypeIn, QString qstrWhatsThisTextIn )
void RegisterConfigValue( ConfigValue ConfigValueIn, QVariant::Type
VariantTypeIn )
void RegisterConfigValue( ConfigValue ConfigValueIn, QVariant::Type
VariantTypeIn, QString qstrWhatsThisTextIn )
void RegisterConfigValue( const ConfigValue ConfigValueIn, const QString
qstrVariantTypeNameIn, const QString qstrWhatsThisTextIn )
DeclareListToLoadAndSave( QString qstrPathConfigValueNameIn, QString
qstrConfigValueNameIn )
Загрузить содержимое файла конфигурации в память одним из следующих способов:
LoadConfigurationValues()
LoadConfigurationValues(QString qstrConfigFilenameIn)
Доступ к содержимому файла конфигурации одним из следующих способов:
getConfigValue( QString qstrConfigValueNameIn )
getBoolConfigValue( QString qstrNameOfConfigValueIn )
getBrushConfigValue( QString qstrNameOfConfigValueIn )
getIntConfigValue( QString qstrNameOfConfigValueIn )
getPaletteConfigValue( QString qstrNameOfConfigValueIn )
getRectConfigValue( QString qstrNameOfConfigValueIn )
getStringConfigValue( QString qstrNameOfConfigValueIn )
getStringListConfigValue( QString qstrNameOfConfigValueIn )
Установите значения в файле конфигурации, используя:
setConfigValue( QString qstrConfigValueNameIn, QVariant variantNewValueIn )
Сохраните переменные файла конфигурации в памяти в файл конфигурации одним из следующих способов:
SaveConfigurationValues()
SaveConfigurationValues(QString qstrConfigFilenameIn)
Создание виджетов, которые можно использовать для изменения содержимого значения конфигурации, используя один из следующих методов:
CreateCheckBox( QString qstrNameOfConfigValueIn )
CreateComboBox(QString qstrNameOfConfigValueIn, QStringList
stringlistComboBoxItemsIn, QLabel * & labelComboBoxOut )
CreateComboBox(QString qstrNameOfConfigValueIn, QStringList
stringlistComboBoxItemsIn )
CreateLineEdit( QString qstrNameOfConfigValueIn )
CreateLineEdit( QString qstrNameOfConfigValueIn, QLabel * & labelOut )
CreateLineEdit( QString qstrNameOfConfigValueIn, QHBoxLayout * & layoutOut,
QLabel * & labelLineEditLabelOut )
clsConfigFileBase
предоставляет другие методы для управления объектом доступа к файлу конфигурации, такие как:
clsConfigFileBase::AddItemToStringList()
clsConfigFileBase::getDebugModeIsEnabled()
,
clsConfigFileBase::getStringConfigValue()
и
clsConfigFileBase::getTotalConfigValues()
У меня также есть программа-редактор файлов конфигурации, которая значительно упрощает доступ к вышеуказанным функциям. Программа редактирования файла конфигурации также имеет документацию по Doxygen.
Если у вас есть какие-либо вопросы, оставьте комментарий.