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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Глобальный доступ в QML  (Прочитано 3931 раз)
warlock
Гость
« : Май 22, 2011, 23:07 »

Заголовок мало о чем говорит, но не придумал ничего точнее.
Есть 2 QML файла:
1) main.qml
2) other.qml

main.qml
Код:
Rectangle {
...
Other {
    id: other
}
Rectangle {
...
    MouseArea {
        anchors.fill: parent
        onClick: {/* Тут вызвать метод определенный в MyType */}
    }
...
}
...
}

other.qml
Код:
Rectangle {
...
MyType {
    id: myType
}
...
}

Т.е. как обеспечивается доступ к объектам находящимся в одном файле, из другого файла?
Записан
twp
Гость
« Ответ #1 : Май 23, 2011, 11:48 »

в таких случаях можно добавить функцию в other например так:

Код:
Rectangle {
    function doSomething() {
        myType.doSomething();
    }
...
MyType {
    id: myType
}
...
}
Ну а потом естетственно вызвать ее в main.qml
Записан
warlock
Гость
« Ответ #2 : Май 23, 2011, 20:45 »

Хм, интересно. А как сделать обратную операцию? Из other вызвать метод находящийся в main?
Записан
twp
Гость
« Ответ #3 : Май 24, 2011, 09:18 »

подобных вещей следует избегать, перекрестные ссылки не есть гуд. Нужно стараться уменьшить число зависимостей между модулями. Кроме того может произойти рекурсивная инициализация. Конечно можно создать свойство-ссылку в other.qml и инициализировать его в main.qml например так:

other.qml
Код:
Rectangle {
   property Item mainWindow
MyType {
    id: myType
}
...
}

main.qml:
Код:
Rectangle {
    id: main
Other {
    id: other
    mainWindow: main
}
Rectangle {
...
}
...
}
теперь в other можно можно вызывать функции из main используя ссылку mainWindow

Но лучше испускать сигнал из other, а в main его ловить и обрабатывать. Если же все таки надо чтоб были две ссылки на other и main, то лучше вынести это в отдельный модуль-посредник, который бы оперировал этими объектами.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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