본문 바로가기
컴퓨터 관련

GTK+ layout 관리 [4] GtkTable

by _BlankSpace 2017. 4. 14.

· GtkTable은 열과 행을 배치할 수 있다.


예제


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
34
35
36
37
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
    int i;
    int j;
    int pos = 0;
    GtkWidget *window;
    GtkWidget *table;
    GtkWidget *button;
    gchar *values[20= { "7""8""9""/""~",
        "4""5""6""*""!",
        "1""2""3""-""@",
        "0"".""=""+""#"
    };
    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), 200200);
    gtk_window_set_title(GTK_WINDOW(window), "GtkTable");
    gtk_container_set_border_width(GTK_CONTAINER(window), 5);
    table = gtk_table_new(45, TRUE);
    gtk_table_set_row_spacings(GTK_TABLE(table), 1);
    gtk_table_set_col_spacings(GTK_TABLE(table), 1);
    for (i=0; i < 4; i++) {
        for (j=0; j < 5; j++) {
            button = gtk_button_new_with_label(values[pos]);
            gtk_table_attach_defaults(GTK_TABLE(table), button, j, j+1, i,
                    i+1);
            pos++;
        }
    }
    gtk_container_add(GTK_CONTAINER(window), table);
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),
            NULL);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
cs


실행 화면




설명


1
table = gtk_table_new(45, TRUE);
cs

- GtkTable widget을 4열 5행으로 만든다.

- 세 번째 파라미터가 TRUE이면 모든 테이블의 셀은 가장 큰 widget에 포함하는 셀의 사이즈에 맞추어진다.


1
2
gtk_table_set_row_spacings(GTK_TABLE(table), 2);
gtk_table_set_col_spacings(GTK_TABLE(table), 2);
cs

- 테이블의 열과 행 공간을 설정.


1
gtk_table_attach_defaults(GTK_TABLE(table), button, j, j+1, i, i+1 );
cs

- 동일한 padding과 expansion 옵션으로 table 컨테이너에 child를 더한다.

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

[git] stash 정리.  (0) 2017.04.14
[GIT] 강제 pull 받기.  (0) 2017.04.14
GTK+ layout 관리 [3] GtkVBox, GtkHBox  (0) 2017.04.14
GTK+ layout 관리 [2] GtkAlignment  (0) 2017.04.12
리눅스 vim 설치 방법  (0) 2017.04.12

댓글