Sök…


Anmärkningar

Ett objekts egenskap kan tilldelas ett statiskt värde som förblir konstant tills det uttryckligen tilldelas ett nytt värde. Men för att utnyttja QML till fullo och dess inbyggda stöd för dynamiska objektbeteenden använder de flesta QML-objekt fastighetsbindningar.

Fastighetsbindningar är en kärnfunktion i QML som låter utvecklare specificera förhållanden mellan olika objektegenskaper. När en fastighets beroende ändras i värde uppdateras egenskapen automatiskt enligt det angivna förhållandet.

Grunder om fastighetsbindningar

Tänk på detta enkla exempel:

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

I exemplet ovan är Rectangle bredd bunden till dess överordnade. Om du ändrar bredden på det körande applikationsfönstret ändras också rektangelns bredd.

Ett mer komplicerat exempel

I det enkla exemplet ställer vi helt enkelt in rektangelns bredd till dess överordnade. Låt oss överväga ett mer komplicerat exempel:

ApplicationWindow {
    visible: true
    width: 400
    height: 640

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

I exemplet utför vi aritmetisk operation på det värde som binds. Om du ändrar storleken på det körande applikationsfönstret till maximal bredd, blir gapet mellan rektangeln och applikationsfönstret bredare och vice versa.

Skapa bindningar med dynamiskt skapade QML-filer

När du använder instanser av QML-filer genom att direkt deklarera dem, skapar varje property en bindning. Detta förklaras i ovanstående exempel.

Så här skapar du dynamiskt komponenter:

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

När storleken på mainWindow ändras mainWindow storleken på den skapade PopUp . För att skapa en bindning ställer du in storleken på popup så här:

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

Nu kommer storleken på PopUp att bero på mainWindow .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow