Поиск…


замечания

Свойству объекта может быть присвоено статическое значение, которое остается постоянным, пока не будет явно назначено новое значение. Однако, чтобы максимально использовать 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 .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow