LINUX.ORG.RU

История изменений

Исправление XMs, (текущая версия) :

QSettings в кастомный файл

Это немного не то. По мне так если уж писать в текстовом формате, то и данные по возможности записывать текстом.


я просто не хочу делать лишних движений

Проверка типов — её тебе в любом случае так или иначе надо делать, пользователь может подсунуть битый или заведомо неправильный файл. В случае бинарных данных типы особо не проверишь, зато надо постоянно проверять, не попал ли на конец файла — по мне так затраты в плане лишних строчек кода сопоставимые.

Я тебе рекомендую написать операторы << и >> для QDataStream/QTextStream для тех классов, которые ты планируешь сохранять. У тебя в итоге сохранение проекта сведётся к stream << project;, и внутри оператора будет то же самое для полей класса. Аналогично с чтением. Даже если в итоге они тебе не понадобятся для основного формата, ты их сможешь использовать потом.


проект А может быть частью (вложением) проекта Б

То есть у тебя в классе проекта есть список, хранящий экземпляры класса проекта? Типа Project содержит QList<Project>? IMHO, свой формат здесь пилить смысла нет, JSON хватит за глаза. XML, может, лучше валидируется, но внешне ужасен, поэтому его не советую

Исходная версия XMs, :

QSettings в кастомный файл

Это немного не то. По мне так если уж писать в текстовом формате, то и данные по возможности записывать текстом.


я просто не хочу делать лишних движений

Проверка типов — её тебе в любом случае так или иначе надо делать, пользователь может подсунуть битый или заведомо неправильный файл. В случае бинарных данных типы особо не проверишь, зато надо постоянно проверять, не попал ли на конец файла — по мне так затраты в плане лишних строчек кода сопоставимые.

Я тебе рекомендую написать операторы << и >> для QDataStream/QTextStream для тех классов, которые ты планируешь сохранять. У тебя в итоге сохранение проекта сведётся к stream << project;, и внутри оператора будет то же самое для полей класса. Аналогично с чтением. Даже если в итоге они тебе не понадобятся для основного формата, ты их сможешь использовать потом.


проект А может быть частью (вложением) проекта Б

То есть у тебя в классе проекта есть список, хранящий экземпляры класса проекта? Типа Project содержит QList<Project>? IMHO, свой формат здесь пилить смысла нет, JSON хватит за глаза