13.1.13.4.1. Contêineres#

Contêineres não armazenam um valor próprio – eles organizam outros controles. Cada um ocupa toda a largura do formulário, e os controles listados dentro dele são construídos como um formulário próprio. Existem dois: group desenha uma caixa rotulada, e tabs desenha uma faixa de abas.

Todos os controles também aceitam as chaves comuns (name, label, tooltip, enabled); consulte a visão geral.

13.1.13.4.1.1. group#

Uma caixa rotulada em torno de um conjunto de controles. Opcionalmente checkable, o que transforma o cabeçalho em um interruptor para tudo que está dentro dela.

{
  "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 cabeçalho exibido na caixa.

  • checkable (boolean, padrão false) – quando true, o cabeçalho carrega uma caixa de seleção que ativa ou desativa todos os controles dentro da caixa, e cujo próprio estado ligado/desligado é salvo.

  • value (boolean, padrão true) – o estado inicial dessa caixa de seleção do cabeçalho. Só faz sentido quando checkable é true.

  • controls (array) – os controles exibidos dentro da caixa.

Salva: um boolean (a caixa de seleção do cabeçalho) quando checkable é true; um group simples não salva nada próprio – apenas os controles dentro dele salvam seus valores.

13.1.13.4.1.2. tabs#

Uma faixa de abas. Cada aba é uma página com sua própria lista de controles, de modo que um formulário longo pode ser dividido entre 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, padrão "north") – em qual borda a barra de abas fica: "north", "south", "west" ou "east".

  • tabs (array) – as páginas das abas, em ordem. Cada página é um objeto com:

    • title (string) – o rótulo da aba.

    • tooltip (string) – texto exibido ao passar o cursor sobre a aba.

    • controls (array) – os controles exibidos nessa página.

Salva: nada próprio; os controles de cada página salvam seus próprios valores.

13.1.13.4.1.3. Aninhamento#

Qualquer controle pode ir dentro de qualquer contêiner, em qualquer profundidade. Um group pode conter um tabs, uma página de aba pode conter caixas group, grupos podem se aninhar dentro de grupos. Todo array controls – o de nível superior, o de um grupo e o de uma página de aba – aceita os mesmos objetos de controle, portanto as regras destas páginas se aplicam da mesma forma em todos os níveis.

Um group checkable aninhado dentro de uma aba é um arranjo comum: a aba contém um recurso, a caixa de seleção do grupo ativa ou desativa o recurso, e os controles internos o configuram.