- 위젯을 가로로 나열한다.
- 기본적으로 왼쪽에서 오른쪽 순서로 나열한다.
- 오른쪽에서 왼쪽으로 기록하는 언어(우좌서법)을 위해 오른쪽에서 왼쪽으로 나열할 수도 있다.
- 위젯을 위에서 아래로 나열한다.
- 위젯을 2차원 격자안에 나열한다.
- 하나의 위젯이 여러개의 셀을 차지할 수 있다.
- 위젯을 2개의 행으로된 "| 설명라벨 | 입력창 |" 스타일로 나열한다.
- 쉽게 말해 "한 줄에 두 개의 위젯"을 나열한다.
- 보통,
QLabel
과QLineEdit
로 입력폼을 만들때 사용하는데, 두 위젯을 같은 열(Row)에 배치하고QLineEdit
에QLabel
을Buddy
관계를 맺게된다.
- 레이아웃을 사용할 때, 자식 위젯을 구성한다고 해서 부모를 전달할 필요는 없다. 레이아웃은
QWidget::setParent()
을 이용해서 자동으로 위젯들의 새로운 부모를 연결하고, 결국 레이아웃이 설치된 위젯의 자식이된다.
한 레이아웃에 속한 위젯들은 레이아웃이 배치된 위젯의 자식이 된다. 주의할 것은 레이아웃 자체의 자식이 되는 것이 아니다. 즉, 위젯은 부모의 자격으로 다른 위젯을 가질 수 있지만 레이아웃은 가질 수는 없다.
- 하나의 레이아웃 속에
addLayout()
함수를 사용해서 또 다른 레이아웃들을 넣을 수 있다.- 안쪽의 레이아웃은 바깥쪽의 레이아웃의 자식이 된다.
이러한 특성으로 여러 위젯들을 감싸고 있는 레이아웃의 배치와 크기를 조정하기 위해서는 위젯의 속성이 아닌 바깥 레이아웃(해당 레이아웃의 부모 레이아웃)의 속성
layoutStretch
값으로 조절한다.아래 그림은 QHBoxLayout의 예시인데 이 레이아웃에는 3개의 자식 레이아웃 3개가 들어가 있고, 가로의 넓이는 왼쪽 자식레이아웃부터 3, 1, 6의 비율로 배치된다. 만약, 한 개의 레이아웃이 추가되면 값은 2, 1, 5, 2와 같이 4개의 비율을 넣을 수 있다.