LINUX.ORG.RU

А расскажите мне про Qt еще! (чтение/сохранение проекта)

 , , ,


1

3

1. В каком формате сохранять? Тут у нас много вариантов. Хотел бы услышать ваши варианты, в каком лучше и чем? Тут я немного потерялся:

1.1. xml? Ну, неплохо, но пилить валидацию на момент загрузки файла.
1.2. json? Тоже хуман реадабле, но опять пилить валидацию на момент загрузки файла.
1.3. QSettings? toByteArray()? Уже глазками не почитать, но зато валидация только один раз (заполнение моделек данными).
1.4. Бинарщина? Мутотня с байтордер, да и может еще чем открыть захочу.
1.5. Я не в курсе и есть другой вариант?

2. Есть связанные и вложенные Model/View и тут бы не создавать лишних прослоек, в частности, используя xml/json получается цепочка: файл-данные-модели, а используя нечитаемые форматы будет цепочка: файл-модели. Понятно, что, модель что-то валидирует при её заполнении данными.

Вобщем вопрос такой комплексный — это вообще нормально валидировать сначала на этапе чтения формата, а затем второй раз при заполнении моделей? Если ответ ДА, то я со спокойной душой запилю на json или xml, но если есть иные менее накладные по кол-ву строк кода варианты — я бы с удовольствием их выслушал. Ну и просто приглашаю подискутировать на этот счет.

Ответ на: комментарий от UVV

Тот, который из тебя сейчас лезет.

Именно тогда уничтожаются и все остальные, это не критерий определения синглтона.

И, прикинь.. у меня сеттингс пишет изменения именно при выходе из программы.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

Именно тогда уничтожаются и все остальные, это не критерий определения синглтона.

Чисто ради самообразования, посижу, подожду от тебя критерии синглтона.

И, прикинь.. у меня сеттингс пишет изменения именно при выходе из программы.

Это твои личные сложности.

UVV ★★★★★
()

Посоны, ап!

Короче получилось завести QXmlSchema. Все там валидирует охренительно: порядок следования, теги и атрибуты, их наличие, типы данных.. и вложенные.

Хорошо это тем, что после валидации по шеме уже не надо бегать каким-нибудь QXmlStreamReader или другим рукопашным способом.

Я смело гружу провалидированный контент прямо в QDomDocument. Тут мне остается провалидировать уже сами значения, но это уже логика моделей. Каждая модель, отвечающая за свою часть данных, получает свой DOM-узел и имеет возможность менять в нем данные — это происходит сразу в сеттерах.

Теперь в процессе работы пользователя все данные сразу актуальны. А при сохранении достаточно дернуть QDomDocument::toString(indentSize);

Модели и вьюхи получились самопальные, не как стандартные (моделИндекс, кол, ров), а DOM, но в целом принцип тот же — шлют сигналы об изменении чего-то там и слушают изменения пользака.

Несмотря на то, что это древнючая Qt5.3.2 — никаких глюков не наблюдается. Т.е. это решение совместимо с 5.3.2 как минимум.

deep-purple ★★★★★
() автор топика
Ответ на: комментарий от deep-purple

А с json ты это психанул — врукопашную проверять наличие, состав и типы данных по каждому полю.

В нормальных языках для этого есть сериализация. Возможно даже для c++ есть что-то.

RazrFalcon ★★★★★
()
Ответ на: комментарий от deep-purple

Хочется хипстерский JSON, но отсутствие штатных средств валидации отпугивает. Так что возьму xml. Просто у меня к нему отвращение после работы с SOAP.

ox55ff ★★★★★
()
Ответ на: комментарий от RazrFalcon

В нормальных языках, c++

А вот нету. Я не нашел. Если найдешь — будут многие благодарны.

deep-purple ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.