본문 바로가기
컴퓨터 관련/Linux || Unix

[GTK+] 4. GTK+ 컨테이너 Widget

by _BlankSpace 2017. 6. 17.

 0. GTK+ 들어가기 전에.. 

이번 포스팅은 컨테이너 widget에 대해서 설명하고자 합니다. 이 부분은 깊게 들어가면 더 많은 함수들이 존재할 것입니다.

하지만, 제가 이번에 정리하고자 하는 부분은 많은 것들 중에서 제가 직접 사용해본 것들을 기준으로 정리할 예정이므로, 더 많은 컨테이너 widget의 정보를 원하시는 분들은 맨 밑의 Development 사이트에서 찾아보시기를 바랍니다.


 1. Paned Window Widget 

- paned window widget은 두 영역으로 나누어서 임의대로 화면 크기를 조절할 수 있는 기능을 제공합니다.

- 두 영역은 handle로 비율을 바꿀 수 있습니다.

- 분할은 수평(HPaned)적이거나 수직(VPaned)적으로 나눌 수 있습니다.

- 분할된 공간에는 하나의 widget만 넣을 수 있다. 하지만 분할된 공간안에 또 다른 paned window widget을 넣는다면 공간을 더 분할할 수 있습니다.


간단하게 팁을 드리자면, Paned Widgow Widget을 이용하여, 여러 개의 탭으로 하나의 화면을 나누게 됩니다. 이후, 탭 안에서 더 세세하게 나눌 필요가 있는 경우가 있을 수 있습니다.

이럴 경우에는 Paned를 이용하여 여러 개의 탭으로 나누고, 탭을 붙일 때, VBox나 HBox를 붙임으로써, 하나의 탭을 더 세세하게 나눌 수 있습니다. 이러한 방식을 사용한다면, 더욱 세세하게 GUI 화면 구성을 할 수 있을 것입니다.


GtkWidget* gtk_hpaned_new (void)

GtkWidget* gtk_vpaned_new (void)

- 이전 포스팅을 참고하시면 GtkHBox, GtkVBox와 비슷한 것을 아실 수 있습니다. 생성은 굉장히 비슷하므로, 방법을 익히시는 데는 큰 무리가 없으리라 생각합니다.


void gtk_paned_add1 (GtkPaned* paned, GtkWidget* child)

void gtk_paned_add2 (GtkPaned* paned, GtkWidget* child)

- gtk_paned_add1()은 좌 또는 상단, gtk_paned_add2()은 우 또는 하단에 자식 widget을 더합니다.


gtk_paned_pack1 (GtkPaned* paned, GtkWidget* child, gboolean resize,

gboolean shrink);

gtk_paned_pack2 (GtkPaned* paned, GtkWidget* child, gboolean resize,

gboolean shrink);

- gtk_paned_add1() 또는 add2()와 같은 기능을 합니다.

- paned : a paned widget

- child : 붙일 자식 widget

- resize : paned widget의 사이즈를 바꿀 때, 자식 widget을 확장할 것인 지를 정하는 인자 입니다.

- shrink : 자식 widget의 요구보다 더 작게 만들어질 것인지 정하는 인자 입니다.


 2. scrollbar widget 

GTK+ 에서도 스크롤 바를 붙이는 기능이 있습니다. 스크롤 바는 창이 길어질 때, 오른쪽이나 하단에 창의 위치를 제어할 수 있는 바를 말합니다.


GtkWidget* gtk_scrolled_window_new (GtkAdjustment* hadjustment,

GtkAdjustment* vadjustment);

- 스크롤바를 생성합니다.

- GtkAdjustment형의 포인터를 인자로 받는 데, 없으면 NULL을 넣어도 됩니다.


void gtk_scrolled_window_set_policy (GtkScrolledWindow* scrolled_window,

GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy);

- enum GtkPolicyType

- GTK_POLICY_ALWAYS : 스크롤바를 항상 보이도록 한다. view 사이즈는 내용과 별개입니다.

- GTK_POLICY_AUTOMATIC : 스크롤바는 자동적으로 사라지거나 나타납니다.

- GTK_POLICY_NEVER : 스크롤바가 나타나지 않는다. 사이즈는 내용에 결정됩니다다..

- GTK_POLICY_EXTERNAL : 스크롤바를 나타내지 않습니다. 하지만 내용에 따른 크기에 강요받 지 않습니다.


gtk_container_add (GTK_CONTAINER(scrolled_window), child widget);

- 자식 widget


예제는 https://developer.gnome.org/gtkmm-tutorial/stable/index.html.en 를 참고하였습니다.

해당 예제는 다음 사이트를 참고하시기 바랍니다.

https://github.com/blankspace-dev/C-/blob/master/2017/06/17/


궁금하신 점이 있으시거나, 수정해야할 점이 있다면 댓글 남겨주시기 바랍니다.


제 글이 도움이 되셨거나 공감이 되시는 부분이 있으셨다면, 밑에 있는 공감 버튼 한 번씩 꾸욱 눌러주시면 감사하겠습니다.


공감 버튼은 저에게 큰 도움이 됩니다. 감사합니다.

'컴퓨터 관련 > Linux || Unix' 카테고리의 다른 글

[unix/linux] 유닉스/리눅스 신호(signal)  (0) 2017.06.18
[GTK+] 5. GTK+ 이벤트  (0) 2017.06.17
[GTK+] 3. GTK+ Layout 관리  (0) 2017.06.17
[GTK+] 2. GTK+ 기본 예제  (0) 2017.06.12
[GTK+] 1. GTK+ 소개  (0) 2017.06.11

댓글