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일 때 제목에 체크박스가 붙어 상자 안의 모든 컨트롤을 활성화하거나 비활성화하며, 그 체크박스 자체의 on/off 상태가 저장됩니다.value (불리언, 기본값
true) – 해당 제목 체크박스의 초기 상태입니다. checkable 이true일 때만 의미가 있습니다.controls (배열) – 상자 안에 표시되는 컨트롤입니다.
저장: checkable 이 true 일 때 불리언(제목 체크박스)을 저장합니다. 일반 그룹은 자체적으로 아무것도 저장하지 않으며 – 그 안의 컨트롤만 자신의 값을 저장합니다.
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 상자를 포함할 수 있으며, 그룹은 그룹 안에 중첩될 수 있습니다. 모든 controls 배열 – 최상위 배열, 그룹의 배열, 탭 페이지의 배열 – 은 동일한 컨트롤 객체를 받으므로, 이 페이지들의 규칙은 모든 수준에서 동일하게 적용됩니다.
탭 안에 중첩된 checkable group 은 흔한 구성입니다: 탭이 하나의 기능을 담고, 그룹의 체크박스가 그 기능을 켜거나 끄며, 그 안의 컨트롤이 기능을 설정합니다.