Russian Qt Forum
Апрель 18, 2024, 22:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование переменных в разных QML файлах  (Прочитано 4841 раз)
Wargos
Новичок

Offline Offline

Сообщений: 5


Просмотр профиля
« : Июнь 26, 2020, 18:13 »

Недавно столкнулся с такой проблемой.
Вот допустим у меня есть main.qml в котором лежит StackView (id:stackView)
За тем несколько файлов .qml типа Page.

Вопрос, как можно между QML-файлами передавать переменные, кроме как через сигналы или создания переменной непосредственно в файле main.qml?
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Июнь 26, 2020, 20:18 »

Передавай значения через пропсы параметрически от родительского компонента дочернему.

Если нужно прямо шарить общий стейт, то:

1) лучше модель сделать в плюсовом коде и дать всем ссылки на неё и вьюхи будут мониторить её изменение (MVVM).
2) либо если QML, то можно сделать QML компонент на базе OtObject, создать его в main.qml и дальше параметрически передать всем вьюхам
3) есть JS либа в QML со стейтом (https://doc.qt.io/qt-5/qtqml-javascript-resources.html#shared-javascript-resources-libraries)
Записан

Гугль в помощь
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #2 : Июль 06, 2020, 15:30 »

Если у тебя stackView это родительский элемент, то из чилдов ты можешь обращаться просто по id. До тех пор пока не переопределишь его в каком то из чилдов. То есть в Page ты можешь обратиться к нему stackView.pop() и это должно работать.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #3 : Июль 06, 2020, 19:53 »

Если у тебя stackView это родительский элемент, то из чилдов ты можешь обращаться просто по id. До тех пор пока не переопределишь его в каком то из чилдов. То есть в Page ты можешь обратиться к нему stackView.pop() и это должно работать.

При условии, что тело Page в этом же файле, что и stackView.
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.043 секунд. Запросов: 22.