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 的,還是分頁頁面的 -- 都接受相同的控制項物件,因此這些頁面上的規則在每一個層級都同樣適用。

一個 checkable 的 group 巢狀於分頁之中是一種常見的形式:分頁承載一項功能,group 的核取方塊用來開啟或關閉該功能,而其內部的控制項則用來設定它。