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 时保存一个 布尔值(标题复选框);普通的 group 本身不保存任何内容 -- 只有其内部的控件才保存各自的值。
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 方框,group 也可以嵌套在 group 中。每个 controls 数组 -- 顶层的、group 的以及选项卡页面的 -- 都接受相同的控件对象,因此这些页面上的规则在每一层都同样适用。
嵌套在选项卡内的可勾选 group 是一种常见的组织方式:选项卡容纳一项功能,group 的复选框用于开启或关闭该功能,而其内部的控件用于配置它。