|
|||||||
Обращение по идентификатору id
Время создания: 10.01.2018 18:09
Текстовые метки: qt, qml, идентификатор, id, обращение, доступ
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - QML - Краткая памятка по QML
Запись: xintrea/mytetra_syncro/master/base/1515596988964gqqfg7n/text.html на raw.github.com
|
|||||||
|
|||||||
Обращение по идентификатору id внутри одного файла Если элемент имеет идентификатор id, то к нему (и к его открытым свойствам) можно обратиться из любого места QML-кода внутри одного файла, независимо от вложенности элементов. Например, можно обратиться из вышестоящего элемента в нижестоящий: Rectangle { id: rectangle1 Text { id: text1 text: "Value text 1" anchors.left: rectangle1.horizontalCenter } } Text { id: text2 text: text1.text anchors.left: parent.left anchors.bottom: parent.bottom } Здесь text2 выведет строку "Value text 1". Обращаться из нижестоящего в вышестоящий элемент по id тоже можно: Rectangle { id: rectangle1 Text { id: text1 text: text2.text anchors.left: rectangle1.horizontalCenter } } Text { id: text2 text: "Value text 2" anchors.left: parent.left anchors.bottom: parent.bottom } Здесь элемент text1 выведет строку "Value text 2". Обращение по идентификатору id между разными файлами При обращении к элементу по идентификатору из одного файла в другой, следует различать две ситуации:
Связанность между файлами возникает например, тогда, когда тип из одного файла начинает использоваться в другом файле. Вот пример: Bicycle.qml Item { id: car property double speed: 5 Wheel { id: frontWheel } Wheel { id: backWheel } } Wheel.qml Item { id: wheel
Component.onCompleted: { console.log("Bicycle speed: "+car.speed); } } Как видно из примера, если связанность между файлами есть, то из "подключаемого" файла Wheel.qml можно достучаться до элемента "основного" файла. Стучаться из "основного" в "подключаемый" обычно не имеет смысла, так как подключаемый файл рассматривается основным файлом как тип. Если связи между файлами нет, то простым образом не получится достучаться до элемента по его идентификатору. Но можно использовать следующий трюк. Необходимо будет в файле, из которого происходит обращение, иметь ссылку на внешний элемент, к которому происходит обращение. Ссылку можно хранить в переменной типа var: Wheel.qml Item { id: wheel property var bicyclePointer: null
Component.onCompleted: { console.log("Bicycle speed: "+bicyclePointer.speed); } } А инициализировать ссылку можно вышестоящим кодом: Wheel { id: frontWheel bicyclePointer: bicycle } Подключение кода других файлов Каждый файл QML, по своей сути, является описанием какого-либо типа. Имя типа - это имя файла. Программа на QML состоит обычно из нескольких файлов. Код, расположенный в других файлах, подключается следующим образом:
Подробнее о подключении файлов написано в следующей заметке: Создание собственных элементов в QML и импортирование одного файла в другой |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|