본문 바로가기
컴퓨터 관련

GTK+ layout 관리 [1] GtkFixed

by _BlankSpace 2017. 4. 12.

· GtkFixed는 고정된 위치와 사이즈로 child 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
#include <gtk/gtk.h>
int main(int argc, char* argv[]) {
    GtkWidget* window;
    GtkWidget* fixed;
    GtkWidget* btn1;
    GtkWidget* btn2;
    GtkWidget* btn3;
    gtk_init(&argc, &argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "GtkFixed");
    gtk_window_set_default_size(GTK_WINDOW(window), 300200);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    fixed = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed);
    btn1 = gtk_button_new_with_label("Button");
    gtk_fixed_put(GTK_FIXED(fixed), btn1, 15050);
    gtk_widget_set_size_request(btn1, 8030);
    btn2 = gtk_button_new_with_label("Button");
    gtk_fixed_put(GTK_FIXED(fixed), btn2, 1515);
    gtk_widget_set_size_request(btn2, 8030);
    btn3 = gtk_button_new_with_label("Button");
    gtk_fixed_put(GTK_FIXED(fixed), btn3, 100100);
    gtk_widget_set_size_request(btn3, 8030);
    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit),
            NULL);
    gtk_widget_show_all(window);
    gtk_main();
    return 0;
}
cs


실행 화면




코드 설명


· 위와 같이 fixed 방법을 사용하면 application의 window가 resize해도 버튼의 자리나 크기는 바뀌

지 않는다.


1
fixed = gtk_fixed_new();
cs

get_fixed_new() 함수는 GtkFixed 컨테이너에 생성한다.


1
gtk_fixed_put(GTK_FIXED(fixed), btn1, 15050);
cs

· 첫 번째 버튼은 150, 50 위치에 고정된다.


1
gtk_widget_set_size_request(btn1, 8030);
cs

· 첫 번째 버튼의 크기를 재조정한다.

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

리눅스 vim 설치 방법  (0) 2017.04.12
리눅스 커맨드 흔한 에러 해결법 [1]  (3) 2017.04.12
GTK [5] Mnemonic.  (0) 2017.04.10
GTK [4] Tooltip.  (0) 2017.04.10
GTK [3] application icon 출력.  (0) 2017.04.09

댓글