Buscar..


Observaciones

A la propiedad de un objeto se le puede asignar un valor estático que permanece constante hasta que se le asigna explícitamente un nuevo valor. Sin embargo, para hacer el uso más completo de QML y su soporte integrado para comportamientos de objetos dinámicos, la mayoría de los objetos QML utilizan enlaces de propiedad.

Los enlaces de propiedad son una característica central de QML que permite a los desarrolladores especificar relaciones entre diferentes propiedades de objetos. Cuando las dependencias de una propiedad cambian de valor, la propiedad se actualiza automáticamente de acuerdo con la relación especificada.

Conceptos básicos sobre los enlaces de propiedad

Considera este simple ejemplo:

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"
    }
}

En el ejemplo anterior, el ancho del Rectangle está vinculado al de su padre. Si cambia el ancho de la ventana de la aplicación en ejecución, el ancho del rectángulo también cambia.

Un ejemplo más complicado.

En el ejemplo simple, simplemente establecemos el ancho del rectángulo al de su padre. Consideremos un ejemplo más complicado:

ApplicationWindow {
    visible: true
    width: 400
    height: 640

    Rectangle{
        id: rect
        anchors.centerIn: parent
        height: 100
        width: parent.width/2 + parent.width/3
        color: "blue"
    }
}

En el ejemplo, realizamos una operación aritmética en el valor que se está enlazando. Si cambia el tamaño de la ventana de la aplicación en ejecución al ancho máximo, el espacio entre el rectángulo y la ventana de la aplicación será más amplio y viceversa.

Crear enlaces con archivos QML creados dinámicamente

Cuando se utilizan instancias de archivos QML declarándolos directamente, cada property crea un enlace. Esto se explica en los ejemplos anteriores.

Así es como creas dinámicamente los componentes:

var component = Qt.createComponent("Popup.qml");
var popup = component.createObject(parent, {"width": mainWindow.width, "height": mainWindow.height});

Cuando cambia el tamaño de mainWindow , el tamaño del PopUp creado no se ve afectado. Para crear un enlace, establezca el tamaño de la popup esta manera:

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);

Ahora el tamaño del PopUp dependerá de mainWindow .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow