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 |
댓글