===== Eigenschaften benutzen =====
In QML können wir ein Element gestalten indem wir seine Eigenschaften benutzen. Wir legen die Farbe, seine Breite und Länge und alle anderen Eigenschaften fest. Es gibt verschiedene Methoden sie festzulegen. Im Element selbst, aus einem anderen Element wenn wir das Element in eine Datei auslagern. Was wäre wenn wir im Element ein anderes Element hätten und wir es von Draußen ansprechen wollten. Über die Eigenschaft __//id//__ können wir andere Elemente in der gleichen Datei ansprechen. Betrachten wir das folgende Beispiel:
import QtQuick 2.7
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Rectangle {
id: rechteck1
color: rechteck2.color
width: 100
height: 100
}
Rectangle {
id: rechteck2
color: "blue"
width: rechteck1.width
height: rechteck1.height
x: 100
}
}
Hier haben wir zwei Rechtecke neben einander liegen. Rechteck 1 hat die Farbe von Rechteck 2 übernommen, wobei Rechteck 2 die Breite und die Länge von Rechteck 2 übernommen hat.
Genauso können Kind-Elemente die Werte der Eltern-Elemente übernehmen und umgekehrt.
import QtQuick 2.7
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Rectangle {
id: rechteck1
color: "red"
width: 100
height: 100
border.color: inneresRechteck.border.color
Rectangle {
id: inneresRechteck
color: parent.color
height: 50
width: 50
border.color: Qt.lighter(parent.color)
}
}
}
Hier sehen wir, wenn wir die Eigenschaften von dem Eltern-Element übernehmen wollen können wir die __//parent//__ Bezeichnung verwenden. Wenn aber das Eltern-Element die Eigenschaftswerte vom Kind-Element übernehmen möchte, muss man die über die __//id//__ ansprechen, weil ein Eltern-Element mehrere Kind-Elemente haben könnte. Umgekehrt gilt das nicht.
===== Variablen deklarieren =====
Anders als auf die vorhandenen Eigenschaften zuzugreifen können wir auch Variable definieren. Das ist sinnvoll, wenn wir globale Eigenschaften definieren worauf mehrere Elemente Zugriff haben oder Kind-Elemente auf Eltern-Element zugreifen.
So müssen wir die Variablen deklarieren:
**//property [:wert]//**
Der Wert ist optional anzugeben, bei Nichtzuweisung wird ein Standardwert genommen, bei __//int//__ wäre es die 0, bei __//string//__ ein leerer Text.
Für Variablen stehen folgende Typen zu Verfügung: __//int//__, __//double//__, __//string//__, __//color//__ und weitere.
Es gibt in Qml auch die Möglichkeit eine Art Referenz auf eine andere Variable zu deklarieren.
**//property alias : //**
Referenziert kann eigentlich alles, sogar Elemente und deren Eigenschaften. Es muss immer die __//id//__ angegeben werden.
Dafür wollen wir eine neue Qml Datei mit dem Namen **Button.qml** anlegen. Wir definieren den Namen des Buttons und seine Farbe. Die Eigenschaften die wir definiert haben werden dann von den Kind-Elementen übernommen.
//Button.qml
import QtQuick 2.7
Rectangle {
id: button
property string name: "button"
property alias backgroundColor: button.color
border.color: Qt.darker(backgroundColor)
radius: 5
width: 200
height: 100
Text {
id: buttonText
anchors.centerIn: parent
text: parent.name
}
}
//main.qml
import QtQuick 2.7
import QtQuick.Window 2.2
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Button {
backgroundColor: "lightsteelblue"
name: "unser Button"
}
}
{{:frameworks:qt:qml:qmlt03:button.png?300|}}