Russian Qt Forum

Qt => Общие вопросы => Тема начата: Wargos от Июнь 26, 2020, 18:13



Название: Использование переменных в разных QML файлах
Отправлено: Wargos от Июнь 26, 2020, 18:13
Недавно столкнулся с такой проблемой.
Вот допустим у меня есть main.qml в котором лежит StackView (id:stackView)
За тем несколько файлов .qml типа Page.

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


Название: Re: Использование переменных в разных QML файлах
Отправлено: navrocky от Июнь 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)


Название: Re: Использование переменных в разных QML файлах
Отправлено: ecspertiza от Июль 06, 2020, 15:30
Если у тебя stackView это родительский элемент, то из чилдов ты можешь обращаться просто по id. До тех пор пока не переопределишь его в каком то из чилдов. То есть в Page ты можешь обратиться к нему stackView.pop() и это должно работать.


Название: Re: Использование переменных в разных QML файлах
Отправлено: navrocky от Июль 06, 2020, 19:53
Если у тебя stackView это родительский элемент, то из чилдов ты можешь обращаться просто по id. До тех пор пока не переопределишь его в каком то из чилдов. То есть в Page ты можешь обратиться к нему stackView.pop() и это должно работать.

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