TabBar QML. Сохранение изменений при переключении между контентом (вкладками, .qml-файлами).
Всем добрый день. Для заполнения TabBar использую компонент loader, а в качестве содержимого .qml-файлы. Путь задаю через параметр source. Во время работы во вкладках начальный контент (загружаемый из .qml-файлов) изменяется (например выбирается один из RadioButton или устанавливается положение Slider), но при переходе в другую вкладку и последующем возврате в предыдущую, контент обновляется до первоначального состояния, что логично, т.к. перед использованием в TabBar qml-файла контента, он был скомпилирован посредством source.
Каким образом можно поддерживать во время работы программы (при переключении в TabBar межу разными вкладками .qml-файлами) текущие состояния компонентов (во всех вкладках), а не возвращаться к первоначальным состояниям.
P.S. Речь идёт именно о поддержании (сохранении) состояний quick компонентов. Если же quick компонент имеет наполнение из C++ части кода посредством Q_PROPERTY проблем нет. Не хотелось бы отводить в С++ "медиаторе" ненужные поля только под сохранение состояний каждого визуального компонента, перекидываясь сигналами-слотами.
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.Вам це подобається? Поділіться в соціальних мережах!
- Akiv Doros
- 11 листопада 2024 р. 14:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50бали,
- Рейтинг балів-4
- molni99
- 26 жовтня 2024 р. 01:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80бали,
- Рейтинг балів4
- molni99
- 26 жовтня 2024 р. 01:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20бали,
- Рейтинг балів-10
Добрый день.
Попробуйте использовать Settings QML Type
Думаю, что можно добавить в каждый таб систему настроек и сохранять текущее состояние, а при перезапуске таба восстанавливать из настроек в обработчике Component.onCompleted
Подход помог, спасибо!
При переходе из вкладки в вкладку, объект из qml-файла уничтожается, мы сохранили параметры, а возврат к вкладке аналогичен новому «запуску» с сохранёнными параметрами.
А есть ли способ подсовывания контента (qml-файла) помимо loader чтобы не происходил постоянный процесс создания, уничтожения объекта (по сути, аналог закрытия открытия программы), а контент неактивной вкладки продолжал своё существование (т.е время жизни равнялось времени жизни работы всего приложения)?
(к примеру, таймер запущенный только в qml- файле контента продолжал свой счёт даже когда вкладка не открыта, конечно таймер на стороне С++ сделает это же и передаст своё значение в момент открытия вкладки, но возможен визуальный процесс логика которого описана только в qml и переносить в С++ лишнее.) Можно отказаться от раздельных qml-файлов и реализовать всё в одном qml-файле отвечающем за всё приложение и описывающее все вкладки TabBar, тогда все элементы будут иметь время жизни работы программы в целом, но уж очень громоздкое и не красивое решение.
Еще раз спасибо за решение с Settings QML Type и Component.onCompleted!
Ну а чем вам не угодило решение, которое описано в документации на TabBar с использованием StackView?
Там не используется Loader и все страницы просто загружаются при запуске программы. Как понимаю, они будут работатеть на протяжении всего жизненного цикла, если только принудительно не будут удалться или добавляться.
Даже и не подумал о StackView, а это именно моё решение, а не loader что ошибочно применял. Спасибо еще раз, теперь всё работает как надо!