13.1.13.4.1. 容器#

容器本身不保存任何值 -- 它们用来组织其他控件。每个容器都占据表单的整个宽度,其内部列出的控件会构建为独立的表单。共有两种:group 绘制一个带标题的方框,tabs 绘制一个选项卡条。

所有控件也接受这些通用键( namelabeltooltipenabled );请参阅 概览

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``)-- 该标题复选框的初始状态。仅在 *checkabletrue 时有意义。

  • controls(数组)-- 显示在方框内的控件。

保存内容:当 checkabletrue 时保存一个 布尔值(标题复选框);普通的 group 本身不保存任何内容 -- 只有其内部的控件才保存各自的值。

13.1.13.4.1.2. tabs#

一个选项卡条。每个选项卡都是一个拥有自己控件列表的页面,因此可以将一个很长的表单拆分到 CameraNetworkSystem 等选项卡中。

{
  "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 方框,group 也可以嵌套在 group 中。每个 controls 数组 -- 顶层的、group 的以及选项卡页面的 -- 都接受相同的控件对象,因此这些页面上的规则在每一层都同样适用。

嵌套在选项卡内的可勾选 group 是一种常见的组织方式:选项卡容纳一项功能,group 的复选框用于开启或关闭该功能,而其内部的控件用于配置它。