1. 절대적 배치

 가장 단순한 레이아웃이다. 위젯의 위치, 크기를 픽셀단위로 하드코딩하는 방식으로 구성된다. 

창의 크기가 바뀌더라도 위젯의 크기와 위치는 변하지않으며 폰트가 변경되거나 플랫폼이 달라지는 등의 

변수에 따라 개발시에 의도한대로 보이지 않을 가능성이 높다. 또한 레이아웃을 변경할 때마다 모든 위젯의

위치를 직접 옮겨줘야하는 불편함이 따른다.  매우 비효율적인 방식이기 때문에 당연하게도 이러한 방식으로

레이아웃을 구성하는 경우는 거의 없다.

 

 

2. 박스 레이아웃(Box Layout)

 위젯을 수직/수평 방향으로 정렬하여 나란히 보여주는 레이아웃이다.  레이아웃 안에 레이아웃을

추가할 수 있으며 addStretch 메소드를 호출하여 레이아웃 내의 항목들의 위치관계를 원하는대로 정의할 수도 있다.

 

QVBoxLayout(수직 박스 레이아웃) 과 QHBoxLayout(수평 박스 레이아웃)을 import 해준다.

 

수평 박스 레이아웃 hbox를 생성한다.

 

세 개의 레이아웃을 hbox에 추가해준 뒤 vbox에 hbox 를 추가해준다. 이 때, addStretch 메소드를 호출하여

hbox 위아래로 각각 3, 1의 stretch 값을 설정해준다.

 

 

앱을 실행시켜서 창의 크기를 변경해보면 박스 레이아웃이 어떤식으로 동작하는지와 stretch 가 어떤

역할을 하는 값인지 알 수 있을 것이다.  이렇게 설계하면 창의 크기가 변하여도 레이블 세 개는 창의

너비만큼의 공간을 차지하며 위아래 공백 비율을 3:1로 유지한다.

 

 

3. 그리드 레이아웃(Grid Layout)

 그리드 레이아웃은 화면 전체를 하나의 테이블로 보고 몇번째 행의 몇번째 열에 widget을 위치시킬지

지정하는 방식이다.

 

QGridLayout 을 import 해준다.

 

그리드 레이아웃을 생성해준다.

 

그리드 레이아웃에 레이블 3개를 추가해준다. 그리드 레이아웃의 addWidget 의 인자가 의미하는 것은 다음과 같다.

첫 번째 인자 : 추가할 위젯

두 번째, 세 번째 인자 : 위젯의 시작위치(행, 열 순)

네 번째, 다섯 번째 인자 : 위젯의 가로, 세로 길이

 

즉, 위의 코드에서 레이블 3개는 아래와 같은 형태로 추가된 것이다.

 

실제로 애플리케이션을 실행해보면 의도한 형태로 표시되는 것을 볼 수 있다.

 

 

'개인 프로젝트 > Accounting Program' 카테고리의 다른 글

#11 종료시 위치 기억  (0) 2021.10.26
#10 프로젝트 구조 변경  (0) 2021.10.20
#8 스타일시트  (0) 2021.10.18
#7 날짜/시간 표시하기  (0) 2021.10.17
#6 윈도우 가운데로 위치시키기  (0) 2021.10.17

+ Recent posts