13.1.13.4.1. Vùng chứa#

Vùng chứa không tự lưu giá trị của riêng chúng -- chúng sắp xếp các điều khiển khác. Mỗi vùng chứa trải rộng toàn bộ chiều ngang của biểu mẫu, và các điều khiển được liệt kê bên trong nó được dựng thành một biểu mẫu riêng. Có hai loại: group vẽ một hộp có nhãn, và tabs vẽ một dải thẻ.

Tất cả các điều khiển cũng chấp nhận các khóa chung (name, label, tooltip, enabled); xem tổng quan.

13.1.13.4.1.1. group#

Một hộp có nhãn bao quanh một tập hợp các điều khiển. Tùy chọn checkable, biến tiêu đề thành một công tắc cho mọi thứ bên trong nó.

{
  "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 }
  ]
}

Đối số:

  • title (string) -- tiêu đề hiển thị trên hộp.

  • checkable (boolean, mặc định false) -- khi true, tiêu đề mang một ô đánh dấu để bật hoặc tắt mọi điều khiển bên trong hộp, và trạng thái bật/tắt của chính nó được lưu lại.

  • value (boolean, mặc định true) -- trạng thái ban đầu của ô đánh dấu trên tiêu đề đó. Chỉ có ý nghĩa khi checkabletrue.

  • controls (array) -- các điều khiển hiển thị bên trong hộp.

Lưu: một giá trị boolean (ô đánh dấu trên tiêu đề) khi checkabletrue; một group thông thường không tự lưu gì -- chỉ các điều khiển bên trong nó lưu giá trị của chúng.

13.1.13.4.1.2. tabs#

Một dải thẻ. Mỗi thẻ là một trang với danh sách điều khiển riêng, nên một biểu mẫu dài có thể được chia thành Camera, Network, System, v.v.

{
  "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" }
      ]
    }
  ]
}

Đối số:

  • tab_position (string, mặc định "north") -- cạnh nào mà thanh thẻ nằm trên đó: "north", "south", "west", hoặc "east".

  • tabs (array) -- các trang thẻ, theo thứ tự. Mỗi trang là một đối tượng với:

    • title (string) -- nhãn của thẻ.

    • tooltip (string) -- văn bản hiển thị khi di chuột lên thẻ.

    • controls (array) -- các điều khiển hiển thị trên trang đó.

Lưu: không tự lưu gì; các điều khiển trên mỗi trang lưu giá trị của riêng chúng.

13.1.13.4.1.3. Lồng nhau#

Bất kỳ điều khiển nào cũng có thể đặt bên trong bất kỳ vùng chứa nào, ở bất kỳ độ sâu nào. Một group có thể chứa một tabs, một trang thẻ có thể chứa các hộp group, các group có thể lồng bên trong các group. Mọi mảng controls -- mảng cấp cao nhất, của một group, và của một trang thẻ -- đều nhận cùng các đối tượng điều khiển, nên các quy tắc trên những trang này áp dụng giống nhau ở mọi cấp.

Một group có thể đánh dấu lồng bên trong một thẻ là một cách bố trí phổ biến: thẻ chứa một tính năng, ô đánh dấu của group bật hoặc tắt tính năng đó, và các điều khiển bên trong cấu hình nó.