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, вложенная внутрь вкладки, – распространённая форма: вкладка содержит функцию, флажок группы включает или отключает эту функцию, а элементы управления внутри настраивают её.