13.1.13.4.1. コンテナ#
コンテナ自体は値を保持しません -- 他のコントロールをまとめる役割を持ちます。各コンテナはフォームの全幅にわたって配置され、その内部に列挙されたコントロールはそれ自体が一つのフォームとして構築されます。コンテナには2種類あります。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 のチェックボックスがその機能をオン/オフし、内部のコントロールがそれを設定します。