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 的,還是分頁頁面的 -- 都接受相同的控制項物件,因此這些頁面上的規則在每一個層級都同樣適用。
一個 checkable 的 group 巢狀於分頁之中是一種常見的形式:分頁承載一項功能,group 的核取方塊用來開啟或關閉該功能,而其內部的控制項則用來設定它。