История изменений
Исправление XMs, (текущая версия) :
QSettings в кастомный файл
Это немного не то. По мне так если уж писать в текстовом формате, то и данные по возможности записывать текстом.
я просто не хочу делать лишних движений
Проверка типов — её тебе в любом случае так или иначе надо делать, пользователь может подсунуть битый или заведомо неправильный файл. В случае бинарных данных типы особо не проверишь, зато надо постоянно проверять, не попал ли на конец файла — по мне так затраты в плане лишних строчек кода сопоставимые.
Я тебе рекомендую написать операторы << и >> для QDataStream/QTextStream для тех классов, которые ты планируешь сохранять. У тебя в итоге сохранение проекта сведётся к stream << project;
, и внутри оператора будет то же самое для полей класса. Аналогично с чтением. Даже если в итоге они тебе не понадобятся для основного формата, ты их сможешь использовать потом.
проект А может быть частью (вложением) проекта Б
То есть у тебя в классе проекта есть список, хранящий экземпляры класса проекта? Типа Project содержит QList<Project>? IMHO, свой формат здесь пилить смысла нет, JSON хватит за глаза. XML, может, лучше валидируется, но внешне ужасен, поэтому его не советую
Исходная версия XMs, :
QSettings в кастомный файл
Это немного не то. По мне так если уж писать в текстовом формате, то и данные по возможности записывать текстом.
я просто не хочу делать лишних движений
Проверка типов — её тебе в любом случае так или иначе надо делать, пользователь может подсунуть битый или заведомо неправильный файл. В случае бинарных данных типы особо не проверишь, зато надо постоянно проверять, не попал ли на конец файла — по мне так затраты в плане лишних строчек кода сопоставимые.
Я тебе рекомендую написать операторы << и >> для QDataStream/QTextStream для тех классов, которые ты планируешь сохранять. У тебя в итоге сохранение проекта сведётся к stream << project;
, и внутри оператора будет то же самое для полей класса. Аналогично с чтением. Даже если в итоге они тебе не понадобятся для основного формата, ты их сможешь использовать потом.
проект А может быть частью (вложением) проекта Б
То есть у тебя в классе проекта есть список, хранящий экземпляры класса проекта? Типа Project содержит QList<Project>? IMHO, свой формат здесь пилить смысла нет, JSON хватит за глаза