6.1 레이아웃 살펴보기
728x90

1. 레이아웃(Layout) 이란?
더보기
A. 레이아웃 (Layout) 의 사전적 정의 찾아보기 링크
- (책·정원·건물 등의) 레이아웃[배치]
- lay = 놓다, 배치하다, 펼치다
- out = 밖으로, 외부로, 완전히
- 무언가를 펼쳐서 일정한 방식으로 정해진 구조에 따라 배열하다
- Layout = 무엇을 어떻게 배열해 놓은 구성/배치 상태
B. 레이아웃 (Layout) 의 역할
- GUI 화면에서 위젯(Button, Label, TextBox 등) 들을 어떻게 배치할 것인지 결정하는 시스템
즉, 프로그램 창 안에- 어디에 놓을지(위치)
- 어느 정도 크기로 놓을지(크기)
- 창 크기가 바뀔 때 자동 정렬/리사이즈
C. 구글에 Qt Widgets Layout 검색 결과 보기
D. 공식 링크 - 레이아웃 관리 | Qt 위젯 | Qt 6.10.1
2. Qt의 레이아웃 관리(Layout Management)
더보기
: 부모 위젯 안에서자식 위젯들의 위치·크기를 자동으로 배치해 주는 시스템으로
PySide6 에서는 모든 QWidget에 대해 레이아웃 시스템을 적용할 수 있습니다.
layout = QVBoxLayout()
parent_widget.setLayout(layout)
- setLayout()을 호출하면
- 해당 레이아웃이 부모 위젯의 "지오메트리 매니저" 역할을 하여
- 모든 자식 위젯의 위치·크기를 자동 관리합니다.
창 크기가 변경되어도 레이아웃이 자동으로 재배치합니다.
3. 예제 요약
더보기
주요 레이아웃
- QHBoxLayout : 가로
- QVBoxLayout : 세로
- QGridLayout : 표(grids)
- QFormLayout : 라벨 + 입력 폼
- 복잡한 화면은 레이아웃 중첩으로 구성
- Stretch, Spacer, SizePolicy 로 “공간 배분” 제어 가능
예제1) Qt 레이아웃 기본 유형
| 레이아웃 | 역할 | 설명 |
| QHBoxLayout | 가로 배치 | 위젯을 가로로 나열(좌→우) |
| QVBoxLayout | 세로 배치 | 위젯을 세로로 나열(위→아래) |
| QGridLayout | 표(Grid) 배치 | 행·열 기반 배치, 셀 병합 가능 |
| QFormLayout | 라벨 + 입력 폼 | 회원가입/설정 화면 같은 2열 구조 |
예제2) 레이아웃 중첩(Nesting Layouts)
# 복잡한 UI는 레이아웃 안에 다른 레이아웃을 넣어서 구성한다.
QVBoxLayout
├── QHBoxLayout (위쪽 버튼)
└── QHBoxLayout (아래쪽 버튼)
예제3) 레이아웃 보조 기능(레이아웃 성능 제어)
| 항목 | 역할 | 예시 |
| Stretch Factor | 위젯 간 공간 비율 조절 | 1 : 2 : 1 |
| SpacerItem | 빈 공간을 늘어나게 함 | 버튼 사이 간격 벌리기 |
| SizePolicy | 위젯의 가로/세로 확장 정책 | Expanding, Fixed |