13.1.13.4.1. Containere#

Containerele nu dețin o valoare proprie – ele organizează alte controale. Fiecare ocupă întreaga lățime a formularului, iar controalele enumerate în interiorul lui sunt construite ca un formular propriu. Există două: group desenează o casetă cu etichetă, iar tabs desenează o bandă de file.

Toate controalele acceptă și cheile comune (name, label, tooltip, enabled); consultați prezentarea generală.

13.1.13.4.1.1. group#

O casetă cu etichetă în jurul unui set de controale. Opțional checkable, ceea ce transformă titlul într-un comutator pentru tot ce se află în 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 }
  ]
}

Argumente:

  • title (string) – titlul afișat pe casetă.

  • checkable (boolean, implicit false) – când este true, titlul poartă o casetă de bifare care activează sau dezactivează fiecare control din interiorul casetei și a cărei stare pornit/oprit este salvată.

  • value (boolean, implicit true) – starea inițială a acelei casete de bifare din titlu. Are sens doar când checkable este true.

  • controls (array) – controalele afișate în interiorul casetei.

Salvează: un boolean (caseta de bifare din titlu) când checkable este true; un grup simplu nu salvează nimic propriu – doar controalele din interiorul lui își salvează valorile.

13.1.13.4.1.2. tabs#

O bandă de file. Fiecare filă este o pagină cu propria listă de controale, astfel încât un formular lung poate fi împărțit în Camera, Network, System și așa mai departe.

{
  "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, implicit "north") – pe care margine se află bara de file: "north", "south", "west" sau "east".

  • tabs (array) – paginile filelor, în ordine. Fiecare pagină este un obiect cu:

    • title (string) – eticheta filei.

    • tooltip (string) – textul afișat la trecerea cu mouse-ul peste filă.

    • controls (array) – controalele afișate pe acea pagină.

Salvează: nimic propriu; controalele de pe fiecare pagină își salvează propriile valori.

13.1.13.4.1.3. Imbricare#

Orice control poate fi plasat în interiorul oricărui container, la orice adâncime. Un group poate conține un tabs, o pagină de filă poate conține casete group, iar grupurile se pot imbrica în alte grupuri. Fiecare tablou controls – cel de nivel superior, cel al unui grup și cel al unei pagini de filă – preia aceleași obiecte de control, așa că regulile de pe aceste pagini se aplică la fel la fiecare nivel.

Un group bifabil imbricat în interiorul unei file este un aranjament frecvent: fila conține o funcție, caseta de bifare a grupului activează sau dezactivează funcția, iar controalele din interior o configurează.