13.1.13.4.1. Container#
Container halten keinen eigenen Wert – sie ordnen andere Steuerelemente an. Jeder erstreckt sich über die gesamte Breite des Formulars, und die darin aufgeführten Steuerelemente werden als eigenes Formular aufgebaut. Es gibt zwei: group zeichnet einen beschrifteten Kasten, und tabs zeichnet eine Registerkartenleiste.
Alle Steuerelemente akzeptieren zudem die allgemeinen Schlüssel (name, label, tooltip, enabled); siehe die Übersicht.
13.1.13.4.1.1. group#
Ein beschrifteter Kasten um eine Gruppe von Steuerelementen. Optional checkable, wodurch die Überschrift zu einem Schalter für alles darin wird.
{
"type": "group",
"title": "Wi-Fi",
"checkable": true,
"name": "wifi_enabled",
"value": true,
"controls": [
{ "type": "lineedit", "name": "ssid", "label": "SSID" },
{ "type": "lineedit", "name": "password", "label": "Password", "password": true }
]
}
Argumente:
title (string) – die auf dem Kasten angezeigte Überschrift.
checkable (boolean, Standard
false) – wenntrue, trägt die Überschrift ein Kontrollkästchen, das jedes Steuerelement innerhalb des Kastens aktiviert oder deaktiviert und dessen eigener Ein-/Aus-Zustand gespeichert wird.value (boolean, Standard
true) – der Anfangszustand dieses Überschrift-Kontrollkästchens. Nur sinnvoll, wenn checkabletrueist.controls (array) – die im Kasten angezeigten Steuerelemente.
Speichert: einen boolean (das Überschrift-Kontrollkästchen), wenn checkable true ist; eine einfache Gruppe speichert nichts Eigenes – nur die Steuerelemente darin speichern ihre Werte.
13.1.13.4.1.2. tabs#
Eine Registerkartenleiste. Jede Registerkarte ist eine Seite mit einer eigenen Liste von Steuerelementen, sodass ein langes Formular auf Camera, Network, System usw. aufgeteilt werden kann.
{
"type": "tabs",
"tab_position": "north",
"tabs": [
{
"title": "Camera",
"tooltip": "Sensor settings",
"controls": [
{ "type": "slider", "name": "gain", "label": "Gain" }
]
},
{
"title": "Network",
"controls": [
{ "type": "lineedit", "name": "hostname", "label": "Hostname" }
]
}
]
}
Argumente:
tab_position (string, Standard
"north") – an welchem Rand die Registerkartenleiste sitzt:"north","south","west"oder"east".tabs (array) – die Registerkartenseiten, in Reihenfolge. Jede Seite ist ein Objekt mit:
title (string) – die Beschriftung der Registerkarte.
tooltip (string) – Hover-Text für die Registerkarte.
controls (array) – die auf dieser Seite angezeigten Steuerelemente.
Speichert: nichts Eigenes; die Steuerelemente auf jeder Seite speichern ihre eigenen Werte.
13.1.13.4.1.3. Verschachtelung#
Jedes Steuerelement kann in jeden Container eingefügt werden, in beliebiger Tiefe. Eine group kann ein tabs enthalten, eine Registerkartenseite kann group-Kästen enthalten, Gruppen können in Gruppen verschachtelt werden. Jedes controls-Array – das der obersten Ebene, das einer Gruppe und das einer Registerkartenseite – nimmt dieselben Steuerelement-Objekte auf, sodass die Regeln auf diesen Seiten auf jeder Ebene gleich gelten.
Eine aktivierbare group, die in einer Registerkarte verschachtelt ist, ist eine gängige Anordnung: die Registerkarte enthält eine Funktion, das Kontrollkästchen der Gruppe schaltet die Funktion ein oder aus, und die Steuerelemente darin konfigurieren sie.