Связывание типа QML
Включает произвольное создание связей свойств. Подробнее...
| Заявление об импорте: | import QtQml 2.13 |
Свойства
Подробное описание
В QML связи свойств приводят к зависимости между свойствами различных объектов.
Связывание с недоступным свойством
Иногда необходимо связать свойство объекта со свойством другого объекта, который не создается непосредственно в QML, например, свойство класса, экспортированного в QML из C++. Вы можете использовать тип Binding для установления этой зависимости; связывая любое значение с любым свойством любого объекта.
Например, в приложении C++, которое отображает свойство "app.enteredText" в QML, вы можете использовать Binding для обновления свойства enteredText.
TextEdit { id: myTextField; text: "Please type here..." }
Binding { target: app; property: "enteredText"; value: myTextField.text } Когда text изменяется, свойство C++ enteredText будет обновляться автоматически.
Условные связи
В некоторых случаях вам может потребоваться изменить значение свойства, когда выполняется определенное условие, но оставить его неизменным в противном случае. Часто это невозможно сделать с прямыми связями, так как вам нужно предоставить значения для всех возможных ветвей.
Например, фрагмент кода ниже вызывает предупреждение всякий раз, когда вы отпускаете мышь. Это происходит потому, что значение связи не определено, когда мышь не нажата.
// produces warning: "Unable to assign [undefined] to double value" value: if (mouse.pressed) mouse.mouseX
Тип Binding может предотвратить это предупреждение.
Binding on value {
when: mouse.pressed
value: mouse.mouseX
} Тип Binding восстанавливает любые ранее заданные прямые связи со свойством.
См. также Qt QML.
Документация по свойствам
delayed : bool
Это свойство указывает, следует ли отложить связывание.
Отложенная связь не будет немедленно обновлять целевой объект, а вместо этого подождет, пока очередь событий не будет очищена. Это может использоваться в качестве оптимизации или для предотвращения присваивания промежуточных значений.
Binding {
target: contactName; property: 'text'
value: givenName + " " + familyName; when: list.ListView.isCurrentItem
delayed: true
} Это свойство было введено в Qt 5.8.
property : string
Свойство, которое необходимо обновить.
Это может быть групповое свойство, если выражение приводит к обращению к свойству типа значение. Например:
Item {
id: item
property rect rectangle: Qt.rect(0, 0, 200, 200)
}
Binding {
target: item
property: "rectangle.x"
value: 100
} target : Объект
Объект, который нужно обновить.
value : любой
Значение, которое необходимо установить для целевого объекта и свойства. Это может быть константа (что не очень полезно), или связанное выражение.
when : bool
Это свойство указывает, когда связь активна. Это должно быть выражение, которое вычисляет истинное значение, когда вы хотите, чтобы связь была активна.
Binding {
target: contactName; property: 'text'
value: name; when: list.ListView.isCurrentItem
} Когда связь становится неактивной, любые прямые связи, которые были ранее установлены для свойства, будут восстановлены.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qml-qtqml-binding.html