Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Nerfair от Июль 23, 2012, 15:04



Название: Видимость JavaScript
Отправлено: Nerfair от Июль 23, 2012, 15:04
Добрый день,

есть проект состоящий из нескольких .QML файлов и .JS файла.

Основной main.qml, и MainButton.qml с MainText.qml в которых хранятся кнопка и текст.

Проблема следующая, из .js файла я могу изменять текст находящийся в main.qml, а так же вызывать .js функции которые небыли занесены в .js файл и находятся в .qml файле, но компилятор ругается что .js файл не может найти элемент если этот самый элемент находится не в main.qml, а в других .qml файлах.

Коротко говоря.

Есть два text элемента, с id: mainText (находится в main.qml) и id: secondText (находится в MainText.qml), так вот если в
example.js подключенному к проекту прописать mainText.Text = "2222"; то текст будет изменен. Если же написать secondText.Text = "1312"; то текст изменен не будет, и выведет ошибку

example.js:5: ReferenceError: Can't find variable: secondText

Самое интересное что Qt Creator в .js файле сам помогает заполнить переменную secondText, а так же находит ее в QML файле по ctrl+click, но в остальных случаях - ее как буд то не существует.

(http://rghost.net/39369067/image.png)

C функциями такая же проблема, из main.qml видит, из всех остальных .qml файлов - нет.


Название: Re: Видимость JavaScript
Отправлено: lighting от Июль 23, 2012, 17:01
Но ведь у тебя этот MainText как-то в main.qml фигурирует? Вот через него и надо делать, напр. так
main.qml
Код
Javascript
...
MainText {
id: mainText
text_to_change: "hello world"
...
 
MainText.qml
Код
Javascript
...
property alias text_to_change: secondText.Text
...
 
После этого совершенно спокойно можно будет вызвать его так
mainText.text_to_change = "World, hello!"
PS: набивал прямо здесь так что могут быть мелкие ошибки, но смысл думаю понятен