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) – quando true, 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.