qml
Связывание свойств
Поиск…
замечания
Свойству объекта может быть присвоено статическое значение, которое остается постоянным, пока не будет явно назначено новое значение. Однако, чтобы максимально использовать QML и встроенную поддержку поведения динамических объектов, большинство объектов QML используют привязки свойств.
Связи свойств - это основная функция QML, которая позволяет разработчикам определять отношения между различными свойствами объекта. Когда изменения свойств изменяются в стоимости, свойство автоматически обновляется в соответствии с указанной зависимостью.
Основы привязки свойств
Рассмотрим этот простой пример:
import QtQuick 2.7
import QtQuick.Controls 2.0
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width
color: "blue"
}
}
В приведенном выше примере ширина Rectangle привязана к ширине его родителя. Если вы измените ширину запущенного окна приложения, ширина прямоугольника также изменится.
Более сложный пример
В простом примере мы просто задаем ширину прямоугольника как ширину его родителя. Рассмотрим более сложный пример:
ApplicationWindow {
visible: true
width: 400
height: 640
Rectangle{
id: rect
anchors.centerIn: parent
height: 100
width: parent.width/2 + parent.width/3
color: "blue"
}
}
В этом примере мы выполняем арифметическую операцию по привязке значения. Если вы измените размер окна запущенного приложения на максимальную ширину, разрыв между прямоугольником и окном приложения будет шире и наоборот.
Создание привязок с динамически создаваемыми файлами QML
При использовании экземпляров файлов QML, непосредственно объявляя их, каждое property создает привязку. Это объясняется в приведенных выше примерах.
Вот как вы динамически создаете компоненты:
var component = Qt.createComponent("Popup.qml");
var popup = component.createObject(parent, {"width": mainWindow.width, "height": mainWindow.height});
Когда размер mainWindow изменяется, размер созданного PopUp не изменяется. Чтобы создать привязку, вы устанавливаете размер popup следующим образом:
var component = Qt.createComponent("Popup.qml");
var options = {
"width": Qt.binding(function() { return mainWindow.width }),
"height": Qt.binding(function() { return mainWindow.height }),
};
var popup = component.createObject(parent, options);
Теперь размер PopUp будет зависеть от mainWindow .