728x90

1. 레이아웃(Layout) 이란?

더보기

A. 레이아웃 (Layout) 의 사전적 정의 찾아보기 링크

    • (책·정원·건물 등의) 레이아웃[배치]
    • lay = 놓다, 배치하다, 펼치다
    • out = 밖으로, 외부로, 완전히
    • 무언가를 펼쳐서 일정한 방식으로 정해진 구조에 따라 배열하다
    • Layout = 무엇을 어떻게 배열해 놓은 구성/배치 상태

 

 

B. 레이아웃 (Layout) 의 역할

  • GUI 화면에서 위젯(Button, Label, TextBox 등) 들을 어떻게 배치할 것인지 결정하는 시스템
    즉, 프로그램 창 안에
    • 어디에 놓을지(위치)
    • 어느 정도 크기로 놓을지(크기)
    • 창 크기가 바뀔 때 자동 정렬/리사이즈
    Qt가 자동으로 관리하도록 해 주는 기능입니다.

 

 

C. 구글에 Qt Widgets Layout 검색 결과 보기

 

 

D. 공식 링크 - 레이아웃 관리 | Qt 위젯 | Qt 6.10.1


 

 

2. Qt의 레이아웃 관리(Layout Management)

더보기

: 부모 위젯 안에서자식 위젯들의 위치·크기를 자동으로 배치해 주는 시스템으로

PySide6 에서는 모든 QWidget에 대해 레이아웃 시스템을 적용할 수 있습니다.

 
layout = QVBoxLayout()
parent_widget.setLayout(layout)
  1. setLayout()을 호출하면
  2. 해당 레이아웃이 부모 위젯의 "지오메트리 매니저" 역할을 하여
  3. 모든 자식 위젯의 위치·크기를 자동 관리합니다.
    창 크기가 변경되어도 레이아웃이 자동으로 재배치합니다.

 

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