본문 바로가기
컴퓨터 관련

GTK+ layout 관리 [3] GtkVBox, GtkHBox

by _BlankSpace 2017. 4. 14.

· GtkVBox는 수평 박스 컨테이너이다. 하나의 칼럼에 chile widget을 놓는다.

· GtkHBox는 수직 박스 컨테이너이다. 하나의 열에 chile widget을 놓는다.


예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <gtk/gtk.h>
int main(int argc, char* argv[]) {
    GtkWidget* window;
    GtkWidget* vbox;
    GtkWidget* settings;
    GtkWidget* accounts;
    GtkWidget* loans;
    GtkWidget* cash;
    GtkWidget* debts;
    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 230250);
    gtk_window_set_title(GTK_WINDOW(window), "GtkVBox");
    gtk_container_set_border_width(GTK_CONTAINER(window), 5);
    vbox = gtk_vbox_new(TRUE, 1);
    gtk_container_add(GTK_CONTAINER(window), vbox);
    settings = gtk_button_new_with_label("Settings");
    accounts = gtk_button_new_with_label("Accounts");
    loans = gtk_button_new_with_label("Loans");
    cash = gtk_button_new_with_label("Cash");
    debts = gtk_button_new_with_label("Debts");
    gtk_box_pack_start(GTK_BOX(vbox), settings, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), accounts, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), loans, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), cash, TRUE, TRUE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), debts, TRUE, TRUE, 0);
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),
            G_OBJECT(window));
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
cs


실행 화면




코드 설명


1
vbox = gtk_vbox_new(TRUE, 1);
cs

· gtk_vbox_new() 함수는 GtkVBox 컨테이너를 생성한다.

· 첫 번째 인자는 homogeneous 인자로 TRUE로 설정하면, 모든 버튼은 같은 사이즈로 설정된다.

· 두 번째 인자는 spacing. 여백의 크기라고 생각하면 된다.


1
gtk_box_pack_start(GTK_BOX(vbox), settings, TRUE, TRUE, );
cs

· 첫 번째 인자 : box container

· 두 번째 인자 : child widget

· 세 번째 인자 : expand

· 네 번째 인자 : fill

· 다섯 번째 인자 : padding

· expand가 FALSE이면 fill 인자는 효과가 없다. 만약 homogeneous가 TRUE이면 expand는 효과가

없다.

'컴퓨터 관련' 카테고리의 다른 글

[GIT] 강제 pull 받기.  (0) 2017.04.14
GTK+ layout 관리 [4] GtkTable  (0) 2017.04.14
GTK+ layout 관리 [2] GtkAlignment  (0) 2017.04.12
리눅스 vim 설치 방법  (0) 2017.04.12
리눅스 커맨드 흔한 에러 해결법 [1]  (3) 2017.04.12

댓글