Spec-Zone.ru › Qt 6.0

Связывание типа QML

Разрешает произвольное создание привязок свойств. Подробнее...

Заявление об импорте: import QtQml 2.0
  • Список всех членов, включая унаследованные

Свойства

  • delayed : bool
  • property : string
  • restoreMode : перечисление
  • target : Объект
  • value : любой
  • when : bool

Подробное описание

В 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.

Документация свойств

[since 5.8] 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
}

[since 5.14] restoreMode : перечисление

Это свойство используется для указания того, нужно ли и как восстанавливать исходное значение при отключении привязки.

Возможные значения:

  • Binding.RestoreNone Исходное значение вообще не восстанавливается
  • Binding.RestoreBinding Исходное значение восстанавливается, если это была другая привязка. В этом случае старая привязка снова активна.
  • Binding.RestoreValue Исходное значение восстанавливается, если это было простое значение, а не привязка.
  • Binding.RestoreBindingOrValue Исходное значение всегда восстанавливается.

Значение по умолчанию — Binding.RestoreBindingOrValue.

Если вы полагаетесь на какое-либо конкретное поведение, касающееся восстановления простых значений при отключении привязок, вы должны явно установить restoreMode.

Постоянное использование restoreMode, которое не восстанавливает предыдущую привязку или значение для определенного свойства, приведет к предупреждению во время выполнения.

Это свойство было введено в Qt 5.14.

target : Объект

Объект, который необходимо обновить.

value : любое

Значение, которое нужно установить для целевого объекта и свойства. Это может быть константа (что не очень полезно) или связанное выражение.

when : bool

Это свойство определяет, когда активна привязка. Оно должно быть установлено в выражение, которое вычисляется как true, когда вы хотите, чтобы привязка была активной.

Binding {
    target: contactName; property: 'text'
    value: name; when: list.ListView.isCurrentItem
}

По умолчанию любая ранее установленная привязка или значение восстанавливаются, когда привязка становится неактивной. Вы можете настроить поведение восстановления с помощью свойства restoreMode.

См. также restoreMode.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qml-qtqml-binding.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API