Я знаю, что это может быть очень маленькая вещь, которую я здесь скучаю, но я потратил много времени на наши часы, пытаясь понять это. Я из Objective-C, и я пытаюсь сделать следующее:
У меня есть main.qml, который является навигационной панелью, и он имеет 2 другие внешние страницы, добавленные к нему как прикрепленный объект. Две страницы имеют вид списка сетки. Теперь есть файл MyApp.cpp, который загружает файл Json и заполняет результат в файле main.qml. Сначала я отображаю только наиболее подходящие предметы на этой странице. Когда пользователь нажимает на любой элемент, я хочу перевести их в page2.qml, который имеет вид списка сетки, как я уже упоминал выше, и заполнить его dataModel, переданным из main.qml (который содержит все данные из MyApp.cpp). Это не принесло мне никакой радости! Мне нужна помощь. Что я могу сделать, чтобы сделать эту работу? Пожалуйста, мне нужна помощь в этом …
Я не уверен, является ли это лучшей практикой или нет, но самый простой способ, который я нашел, — это использовать глобальный объект Qt.
По сути, присвойте свои данные или объект объекту Qt, и вы сможете получить к нему доступ с любой другой страницы.
Например.
В main.qml в onCreationCompleted или в любой другой функции, в которую вы получаете ваши данные:
function getData(data) {
Qt.myVariable = data;
}
Затем на другой странице вы можете получить к нему доступ. Например. в Page2.qml:
Page {
onCreationComplete: {
myLabel.text = Qt.myVariable;
}
}
Как я уже упоминал, это работает и для объектов, поэтому вы можете назначить панель навигации, лист, страницу и т. Д. Так что такие вещи, как «Qt.myNavPane.push (page)», становятся возможными.
Я столкнулся с проблемами, когда мне нужно было использовать Qt для различных целей. Я думаю, что сигналы и слоты лучше практиковать, но не всегда практичны.
Других решений пока нет …