13.1.13.4.1. Контейнери#

Контейнери не зберігають власного значення – вони впорядковують інші елементи керування. Кожен з них займає всю ширину форми, а перелічені всередині елементи керування будуються як окрема форма. Їх два: group малює позначену рамку, а tabs малює смугу вкладок.

Усі елементи керування також приймають спільні ключі (name, label, tooltip, enabled); див. огляд.

13.1.13.4.1.1. group#

Позначена рамка навколо набору елементів керування. За бажанням checkable, що перетворює заголовок на перемикач для всього, що знаходиться всередині.

{
  "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 }
  ]
}

Аргументи:

  • title (рядок) – заголовок, що відображається на рамці.

  • checkable (булеве значення, за замовчуванням false) – коли true, заголовок містить прапорець, який вмикає або вимикає кожен елемент керування всередині рамки і власний стан увімкнення/вимкнення якого зберігається.

  • value (булеве значення, за замовчуванням true) – початковий стан цього прапорця заголовка. Має сенс лише коли checkable дорівнює true.

  • controls (масив) – елементи керування, що відображаються всередині рамки.

Зберігає: булеве значення (прапорець заголовка), коли checkable дорівнює true; звичайна група не зберігає нічого власного – лише елементи керування всередині зберігають свої значення.

13.1.13.4.1.2. tabs#

Смуга вкладок. Кожна вкладка – це сторінка з власним списком елементів керування, тож довгу форму можна розділити на Camera, Network, System тощо.

{
  "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" }
      ]
    }
  ]
}

Аргументи:

  • tab_position (рядок, за замовчуванням "north") – на якому краю розташована смуга вкладок: "north", "south", "west" або "east".

  • tabs (масив) – сторінки вкладок, за порядком. Кожна сторінка – це об’єкт з:

    • title (рядок) – підпис вкладки.

    • tooltip (рядок) – підказка при наведенні для вкладки.

    • controls (масив) – елементи керування, що відображаються на цій сторінці.

Зберігає: нічого власного; елементи керування на кожній сторінці зберігають свої власні значення.

13.1.13.4.1.3. Вкладеність#

Будь-який елемент керування можна помістити в будь-який контейнер на будь-яку глибину. group може містити tabs, сторінка вкладки може містити рамки group, групи можуть вкладатися одна в одну. Кожен масив controls – верхнього рівня, групи та сторінки вкладки – приймає ті самі об’єкти елементів керування, тож правила на цих сторінках застосовуються однаково на кожному рівні.

Група group з прапорцем, вкладена у вкладку, – поширений підхід: вкладка містить функцію, прапорець групи вмикає або вимикає цю функцію, а елементи керування всередині її налаштовують.