Auf dieser Seite

var QML Value Type

ein generischer Eigenschaftstyp. Mehr...

Ausführliche Beschreibung

Der Typ „ var “ ist ein generischer Eigenschaftstyp, der sich auf jeden beliebigen Datentyp beziehen kann.

Er entspricht einer regulären JavaScript-Variablen. Beispielsweise können „var“-Eigenschaften Zahlen, Zeichenketten, Objekte, Arrays und Funktionen speichern:

Item {
    property var aNumber: 100
    property var aBool: false
    property var aString: "Hello world!"
    property var anotherString: String("#FF008800")
    property var aColor: Qt.rgba(0.2, 0.3, 0.4, 0.5)
    property var aRect: Qt.rect(10, 10, 10, 10)
    property var aPoint: Qt.point(10, 10)
    property var aSize: Qt.size(10, 10)
    property var aVector3d: Qt.vector3d(100, 100, 100)
    property var anArray: [1, 2, 3, "four", "five", (function() { return "six"; })]
    property var anObject: { "foo": 10, "bar": 20 }
    property var aFunction: (function() { return "one"; })
}

Semantik der Änderungsbenachrichtigungen

Es ist wichtig zu beachten, dass Änderungen an regulären Eigenschaften von JavaScript-Objekten, die einer `var`-Eigenschaft zugewiesen sind, keine Aktualisierungen der Bindungen auslösen, die auf sie zugreifen. Das folgende Beispiel zeigt „Das Auto hat 4 Räder“ an, da die Änderung der Eigenschaft `wheels` keine Neubewertung der der Eigenschaft „text“ zugewiesenen Bindung bewirkt:

Item {
    property var car: new Object({wheels: 4})

    Text {
        text: "The car has " + car.wheels + " wheels";
    }

    Component.onCompleted: {
        car.wheels = 6;
    }
}

Hätte der „onCompleted“-Handler stattdessen ` "car = new Object({wheels: 6})" ` enthalten, würde der Text auf „Das Auto hat 6 Räder“ aktualisiert werden, da die Eigenschaft „car“ selbst geändert würde, was die Ausgabe einer Änderungsbenachrichtigung zur Folge hätte.

Semantik der Initialisierung von Eigenschaftswerten

Die QML-Syntax legt fest, dass geschweifte Klammern auf der rechten Seite einer Zuweisung zur Initialisierung eines Eigenschaftswerts eine Bindungszuweisung kennzeichnen. Dies kann bei der Initialisierung einer „ var “-Eigenschaft verwirrend sein, da leere geschweifte Klammern in JavaScript entweder einen Ausdrucksblock oder eine leere Objektdeklaration bezeichnen können. Wenn Sie eine „ var “-Eigenschaft mit einem leeren Objektwert initialisieren möchten, sollten Sie die geschweiften Klammern in runde Klammern setzen.

Eigenschaften vom Typ „ var “ sind standardmäßig vom Typ „ undefined “.

Beispiel:

Item {
    property var first:  {}   // nothing = undefined
    property var second: {{}} // empty expression block = undefined
    property var third:  ({}) // empty object
}

Im vorangegangenen Beispiel ist die Eigenschaft „ first “ an einen leeren Ausdruck gebunden, dessen Ergebnis „undefined“ ist. Die Eigenschaft „ second “ ist an einen Ausdruck gebunden, der einen einzelnen, leeren Ausdrucksblock („{}“) enthält, der ebenfalls das Ergebnis „undefined“ hat. Die Eigenschaft „ third “ ist an einen Ausdruck gebunden, der als leere Objektdeklaration ausgewertet wird, und daher wird die Eigenschaft mit diesem leeren Objektwert initialisiert.

Ebenso kann ein Doppelpunkt in JavaScript entweder eine Wertzuweisung für eine Objekteigenschaft oder eine Code-Kennzeichnung sein. Daher kann die Initialisierung einer `var`-Eigenschaft mit einer Objektdeklaration auch Klammern erfordern:

Item {
    property var first: { example: 'true' }    // example is interpreted as a label
    property var second: ({ example: 'true' }) // example is interpreted as a property
    property var third: { 'example': 'true' }  // example is interpreted as a property
    Component.onCompleted: {
        console.log(first.example) // prints 'undefined', as "first" was assigned a string
        console.log(second.example) // prints 'true'
        console.log(third.example) // prints 'true'
    }
}

Siehe auch QML-Werttypen.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.