Submit формы в QML, как лучше это делать?

Доброго времени суток!

Создаётся приложение на QML (пока еще новичок в этом) представляющее из себя собственно форму разбитую на множество qml файлов переключаемых через SwipeView. В форме есть различные поля, как текстовые так и других типов, дошел до сохранения и загрузки данных в форму.

Вижу по сути 2 пути:

1) раздавать нужным полям objectname и реализовывать сохранение в С++ через findChild и далее в нужном формате (планирую сжатый JSON для простоты) сохранять в файл.

2) сбор данных посредством JS и сохранение уже вызывая метод С++ из прокинутого класса (qmlRegisterSingletonType). Сбор данных, как вариант, у каждого поля будет Component.onCompleted где поле будет "регистрировать" себя в глобальном объекте и данные при сохранении будут получатся путём обхода этого регистра)

Какие еще подходы в таких случаях используют? По сути пока планирую 1ый способ реализовывать, но хотелось бы знать best practice, которые в гугле как то не получается найти.
  • Вопрос задан
  • 721 просмотр
Решения вопроса 1
PavelK
@PavelK
Оба Ваших подхода - костыли.

Для этого есть Q_PROPERTY, если вкратце - наследуете Ваш класс от QObject, прописываете Q_PROPERTY, например field1, дальше в QML
Item {
 id: myForm
  objectName: "myForm"
 property var formHandler;
 
 TextIntput {
    id: textInput1
   onEditingFinished: {
      formHandler.field1= textInput1.text; (textInput1 можно отбросить и написать просто text)
   }
 }
}

Находите через findChild "myForm", устанавливаете ему через QVariant::fromValue(myFormHandler) инстанс класса обработчика. Таким макаром при завершении редактирования текста Вы в c++ классе автоматически получаете актуальное значение. Дальше, для сохранения значений, например в базу, можете прописать в слотах какую-либо функцию, например saveForm(); и в QML по нажатию кнопки её вызывать: formHandler.saveForm(); и уже ничего ниоткуда собирать не надо - всё будет в прописанных Q_PROPERTY.

P.S. Это лишь один из вариантов =)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Gytim
ну третий среднее, можно выгружать в qml, чтото мелкое производить в qml а уж глобальное от чего зависят другие формы в с++, но это мне не очень понравилось, лучше либо в одно либо во втором, проще код читать и искать.
Я например больше в с++. У меня вся инфа списки. Поэтому
Модели храню в c++, кнопки - проброс в с++ на изменение моделей. А простое, в qml, пример переходы, открытие окон, там калькулятор(в с++ только конечный результат)
Но каждому свое, для меня qml это куча возможностей и куча костылей, каждый может использовать что ему хочется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы