TabBar QML. Сохранение изменений при переключении между контентом (вкладками, .qml-файлами).
Всем добрый день. Для заполнения TabBar использую компонент loader, а в качестве содержимого .qml-файлы. Путь задаю через параметр source. Во время работы во вкладках начальный контент (загружаемый из .qml-файлов) изменяется (например выбирается один из RadioButton или устанавливается положение Slider), но при переходе в другую вкладку и последующем возврате в предыдущую, контент обновляется до первоначального состояния, что логично, т.к. перед использованием в TabBar qml-файла контента, он был скомпилирован посредством source.
Каким образом можно поддерживать во время работы программы (при переключении в TabBar межу разными вкладками .qml-файлами) текущие состояния компонентов (во всех вкладках), а не возвращаться к первоначальным состояниям.
P.S. Речь идёт именно о поддержании (сохранении) состояний quick компонентов. Если же quick компонент имеет наполнение из C++ части кода посредством Q_PROPERTY проблем нет. Не хотелось бы отводить в С++ "медиаторе" ненужные поля только под сохранение состояний каждого визуального компонента, перекидываясь сигналами-слотами.
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
- Akiv Doros
- Nov. 11, 2024, 10:58 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:50points,
- Rating points-4
- molni99
- Oct. 26, 2024, 8:37 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:80points,
- Rating points4
- molni99
- Oct. 26, 2024, 8:29 a.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:20points,
- Rating points-10
Добрый день.
Попробуйте использовать Settings QML Type
Думаю, что можно добавить в каждый таб систему настроек и сохранять текущее состояние, а при перезапуске таба восстанавливать из настроек в обработчике Component.onCompleted
Подход помог, спасибо!
При переходе из вкладки в вкладку, объект из qml-файла уничтожается, мы сохранили параметры, а возврат к вкладке аналогичен новому «запуску» с сохранёнными параметрами.
А есть ли способ подсовывания контента (qml-файла) помимо loader чтобы не происходил постоянный процесс создания, уничтожения объекта (по сути, аналог закрытия открытия программы), а контент неактивной вкладки продолжал своё существование (т.е время жизни равнялось времени жизни работы всего приложения)?
(к примеру, таймер запущенный только в qml- файле контента продолжал свой счёт даже когда вкладка не открыта, конечно таймер на стороне С++ сделает это же и передаст своё значение в момент открытия вкладки, но возможен визуальный процесс логика которого описана только в qml и переносить в С++ лишнее.) Можно отказаться от раздельных qml-файлов и реализовать всё в одном qml-файле отвечающем за всё приложение и описывающее все вкладки TabBar, тогда все элементы будут иметь время жизни работы программы в целом, но уж очень громоздкое и не красивое решение.
Еще раз спасибо за решение с Settings QML Type и Component.onCompleted!
Ну а чем вам не угодило решение, которое описано в документации на TabBar с использованием StackView?
Там не используется Loader и все страницы просто загружаются при запуске программы. Как понимаю, они будут работатеть на протяжении всего жизненного цикла, если только принудительно не будут удалться или добавляться.
Даже и не подумал о StackView, а это именно моё решение, а не loader что ошибочно применял. Спасибо еще раз, теперь всё работает как надо!