13.1.13.4.1. Contentores#
Os contentores não guardam um valor próprio – organizam outros controlos. Cada um ocupa toda a largura do formulário, e os controlos nele listados são construídos como um formulário próprio. Existem dois: group desenha uma caixa com etiqueta, e tabs desenha uma barra de separadores.
Todos os controlos também aceitam as chaves comuns (name, label, tooltip, enabled); consulte a descrição geral.
13.1.13.4.1.1. group#
Uma caixa com etiqueta em torno de um conjunto de controlos. Opcionalmente checkable, o que transforma o título num interruptor para tudo o que está no seu interior.
{
"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 }
]
}
Argumentos:
title (string) – o título mostrado na caixa.
checkable (boolean, predefinição
false) – quandotrue, o título inclui uma caixa de verificação que ativa ou desativa todos os controlos dentro da caixa, e cujo próprio estado ligado/desligado é guardado.value (boolean, predefinição
true) – o estado inicial dessa caixa de verificação do título. Só tem significado quando checkable étrue.controls (array) – os controlos mostrados dentro da caixa.
Guarda: um boolean (a caixa de verificação do título) quando checkable é true; um group simples não guarda nada de próprio – apenas os controlos no seu interior guardam os seus valores.
13.1.13.4.1.2. tabs#
Uma barra de separadores. Cada separador é uma página com a sua própria lista de controlos, pelo que um formulário longo pode ser dividido por Camera, Network, System, e assim por diante.
{
"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" }
]
}
]
}
Argumentos:
tab_position (string, predefinição
"north") – em que extremidade fica a barra de separadores:"north","south","west"ou"east".tabs (array) – as páginas dos separadores, por ordem. Cada página é um objeto com:
title (string) – a etiqueta do separador.
tooltip (string) – texto de ajuda ao passar o rato sobre o separador.
controls (array) – os controlos mostrados nessa página.
Guarda: nada de próprio; os controlos em cada página guardam os seus próprios valores.
13.1.13.4.1.3. Aninhamento#
Qualquer controlo pode ficar dentro de qualquer contentor, a qualquer profundidade. Um group pode conter um tabs, uma página de separador pode conter caixas group, os grupos podem aninhar-se dentro de grupos. Cada array controls – o de topo, o de um grupo e o de uma página de separador – aceita os mesmos objetos de controlo, pelo que as regras destas páginas aplicam-se de igual modo a todos os níveis.
Um group checkable aninhado dentro de um separador é uma disposição comum: o separador contém uma funcionalidade, a caixa de verificação do grupo liga ou desliga essa funcionalidade, e os controlos no interior configuram-na.