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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
#include <gtk/gtk.h> int main ( int argc, char *argv[] ) { GtkWidget *window; // 윈도우 GtkWidget *button; // 버튼 GtkWidget *hbox; // 박스 GtkWidget *vbox; // 박스 GtkWidget *sep; // 분리선 gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); // 윈도우를 만든다 gtk_window_set_title(GTK_WINDOW(window),"박스 패킹"); // 윈도우에 타이틀을 정해준다 g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL); // 중간에 함수를 거치지 않고 바로 gtk_main_quit호출 이런식으로 써도 욕안먹을려나 몰라 gtk_container_set_border_width (GTK_CONTAINER (window), 10); // 윈도우의 여백을 10 으로 지정, hbox = gtk_hbox_new(1,0); // GtkWidget * gtk_hbox_new (gint homogeneous (가운데 정렬), gint spacing); vbox = gtk_vbox_new(1,0); // 수평박스와 수직박스를 하나씩 만든다. button = gtk_button_new_with_label("수평버튼1"); gtk_box_pack_start(GTK_BOX(hbox),button,1,1,0); //버튼1을 수평박스 첫번째(왼쪽)에 패킹한다 //void gtk_box_pack_start(GtkBox *box, GtkWidget *child, gint expand, gint fill, gint padding); // 패킹할 박스, 패킹할 위젯(버튼), 여백조절, 여백조절, 여백조절 gtk_widget_show (button); button = gtk_button_new_with_label("수평버튼2"); gtk_box_pack_end(GTK_BOX(hbox),button,1,1,0); //버튼2를 수평박스 마지막(오른쪽)에 패킹한다 gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(vbox),hbox,1,1,0); // 수직박스에 수평박스 넣기 sep = gtk_hseparator_new(); // 수평분리선을 하나 만든후 gtk_box_pack_start(GTK_BOX(vbox),sep,0,0,0); // 수직박스에 더해준다. gtk_widget_show(sep); // 그리고 보여준다 button = gtk_button_new_with_label("수직버튼1"); gtk_box_pack_start(GTK_BOX(vbox),button,1,1,0); gtk_widget_show(button); button = gtk_button_new_with_label("수직버튼2"); gtk_box_pack_start(GTK_BOX(vbox),button,1,1,0); gtk_widget_show(button); gtk_container_add(GTK_CONTAINER(window),vbox); // 수직박스만 윈도우에 올린다. gtk_widget_show(hbox); // 수평박스를 보여준다 gtk_widget_show(vbox); // 수직박으를 보여준다 gtk_widget_show (window); gtk_main (); return 0; } ** 한글 처리방법 VS에서 저장할때 파일 -> 저장 고급 옵션 -> 인코딩 -> 유니코드(서명 없는 UTF-8, 또는 BOM 아님) , Unix(LF)로 저장한후 컴파일한다. |
Category Archives: GTK and QT
[GTK] 3.박스 입문
1 |
<tt><a target="_blank" class="con_link" name="line1">01:</a> <b><font color="#008080">#include</font></b> <font color="#ff0000"><gtk/gtk.h></font><br><a target="_blank" class="con_link" name="line2">02:</a><br><a target="_blank" class="con_link" name="line3">03:</a> <font color="#0000ff">static</font> <font color="#0000ff">void</font> <font color="#9a1900">callback</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> gpointer data <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line4">04:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line5">05:</a> <font color="#9a1900">g_print </font><font color="#000000">(</font><font color="#ff0000">"Hello again - %s was pressed\n"</font><font color="#000000">,</font> <font color="#000000">(</font>gchar <font color="#000000">*</font><font color="#000000">)</font> data<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900">data 를 화면에 뿌려준다</font><br><a target="_blank" class="con_link" name="line6">06:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line7">07:</a><br><a target="_blank" class="con_link" name="line8">08:</a> <font color="#0000ff">static</font> gboolean <font color="#9a1900">delete_event</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> GdkEvent <font color="#000000">*</font>event<font color="#000000">,</font> gpointer data <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line9">09:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line10">10:</a> <font color="#9a1900">gtk_main_quit </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> GTK 메인루프를 종료시킨다 </font><br><a target="_blank" class="con_link" name="line11">11:</a> <font color="#0000ff">return</font> FALSE<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line12">12:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line13">13:</a><br><a target="_blank" class="con_link" name="line14">14:</a> <font color="#0000ff">int</font> <font color="#9a1900">main</font><font color="#000000">(</font><font color="#0000ff">int</font> argc<font color="#000000">,</font> <font color="#0000ff">char</font> <font color="#000000">*</font>argv<font color="#000000">[</font><font color="#000000">]</font><font color="#000000">)</font><br><a target="_blank" class="con_link" name="line15">15:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line16">16:</a> GtkWidget <font color="#000000">*</font>window<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line17">17:</a> GtkWidget <font color="#000000">*</font>button<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line18">18:</a> GtkWidget <font color="#000000">*</font>box1<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line19">19:</a><br><a target="_blank" class="con_link" name="line20">20:</a> <font color="#9a1900">gtk_init </font><font color="#000000">(</font><font color="#000000">&</font>argc<font color="#000000">,</font> <font color="#000000">&</font>argv<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line21">21:</a><br><a target="_blank" class="con_link" name="line22">22:</a> window <font color="#000000">=</font> <font color="#9a1900">gtk_window_new </font><font color="#000000">(</font>GTK_WINDOW_TOPLEVEL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line23">23:</a><br><a target="_blank" class="con_link" name="line24">24:</a> <font color="#009900">//</font><font color="#009900"> window에 타이틀 지정</font><br><a target="_blank" class="con_link" name="line25">25:</a> <font color="#9a1900">gtk_window_set_title </font><font color="#000000">(</font><font color="#9a1900">GTK_WINDOW </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"Hello Buttons!"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line26">26:</a><br><a target="_blank" class="con_link" name="line27">27:</a> <font color="#009900">//</font><font color="#009900"> 종료 이벤트 처리</font><br><a target="_blank" class="con_link" name="line28">28:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"delete_event"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>delete_event<font color="#000000">)</font><font color="#000000">,</font> NULL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line29">29:</a> <br><a target="_blank" class="con_link" name="line30">30:</a> <font color="#009900">//</font><font color="#009900"> 경계선 여백 지정</font><br><a target="_blank" class="con_link" name="line31">31:</a> <font color="#9a1900">gtk_container_set_border_width </font><font color="#000000">(</font><font color="#9a1900">GTK_CONTAINER </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#993399">10</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line32">32:</a><br><a target="_blank" class="con_link" name="line33">33:</a> <font color="#009900">//</font><font color="#009900"> 박스 생성 </font><br><a target="_blank" class="con_link" name="line34">34:</a> box1 <font color="#000000">=</font> <font color="#9a1900">gtk_hbox_new </font><font color="#000000">(</font>FALSE<font color="#000000">,</font> <font color="#993399">0</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line35">35:</a><br><a target="_blank" class="con_link" name="line36">36:</a> <font color="#009900">//</font><font color="#009900"> 박스를 윈도우에 넣는다</font><br><a target="_blank" class="con_link" name="line37">37:</a> <font color="#9a1900">gtk_container_add </font><font color="#000000">(</font><font color="#9a1900">GTK_CONTAINER </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> box1<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line38">38:</a><br><a target="_blank" class="con_link" name="line39">39:</a> <font color="#009900">//</font><font color="#009900"> 라벨을 가지고 버튼을 만든다</font><br><a target="_blank" class="con_link" name="line40">40:</a> button <font color="#000000">=</font> <font color="#9a1900">gtk_button_new_with_label </font><font color="#000000">(</font><font color="#ff0000">"Button 1"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line41">41:</a><br><a target="_blank" class="con_link" name="line42">42:</a> <font color="#009900">//</font><font color="#009900"> 버튼1이 클릭되면 "button 1"이라는 값을 전달하며 callback 함수를 호출하게 한다</font><br><a target="_blank" class="con_link" name="line43">43:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"clicked"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>callback<font color="#000000">)</font><font color="#000000">,</font> <font color="#000000">(</font>gpointer<font color="#000000">)</font> <font color="#ff0000">"button 1"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line44">44:</a><br><a target="_blank" class="con_link" name="line45">45:</a> <font color="#009900">//</font><font color="#009900"> 버튼1을 박스에 묶는다</font><br><a target="_blank" class="con_link" name="line46">46:</a> <font color="#9a1900">gtk_box_pack_start </font><font color="#000000">(</font><font color="#9a1900">GTK_BOX</font><font color="#000000">(</font>box1<font color="#000000">)</font><font color="#000000">,</font> button<font color="#000000">,</font> TRUE<font color="#000000">,</font> TRUE<font color="#000000">,</font> <font color="#993399">0</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line47">47:</a><br><a target="_blank" class="con_link" name="line48">48:</a> <font color="#009900">//</font><font color="#009900"> 버튼1을 보여준다</font><br><a target="_blank" class="con_link" name="line49">49:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line50">50:</a><br><a target="_blank" class="con_link" name="line51">51:</a> <font color="#009900">//</font><font color="#009900"> 버튼2를 만든다 (재활용)</font><br><a target="_blank" class="con_link" name="line52">52:</a> button <font color="#000000">=</font> <font color="#9a1900">gtk_button_new_with_label </font><font color="#000000">(</font><font color="#ff0000">"Button 2"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line53">53:</a><br><a target="_blank" class="con_link" name="line54">54:</a> <font color="#009900">//</font><font color="#009900"> 역시 버튼2가 클릭되면 "button 2" 를가지고 callback 함수를 호출한다</font><br><a target="_blank" class="con_link" name="line55">55:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"clicked"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>callback<font color="#000000">)</font><font color="#000000">,</font> <font color="#000000">(</font>gpointer<font color="#000000">)</font> <font color="#ff0000">"button 2"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line56">56:</a><br><a target="_blank" class="con_link" name="line57">57:</a> <font color="#009900">//</font><font color="#009900"> 버튼2를 박스에 묶는다</font><br><a target="_blank" class="con_link" name="line58">58:</a> <font color="#9a1900">gtk_box_pack_start</font><font color="#000000">(</font><font color="#9a1900">GTK_BOX </font><font color="#000000">(</font>box1<font color="#000000">)</font><font color="#000000">,</font> button<font color="#000000">,</font> TRUE<font color="#000000">,</font> TRUE<font color="#000000">,</font> <font color="#993399">0</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line59">59:</a><br><a target="_blank" class="con_link" name="line60">60:</a> <font color="#009900">//</font><font color="#009900"> 버튼과 박스, 윈도우를 보여준다</font><br><a target="_blank" class="con_link" name="line61">61:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line62">62:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>box1<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line63">63:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line64">64:</a><br><a target="_blank" class="con_link" name="line65">65:</a> <font color="#9a1900">gtk_main </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 응답을 기다린다 </font><br><a target="_blank" class="con_link" name="line66">66:</a><br><a target="_blank" class="con_link" name="line67">67:</a> <font color="#0000ff">return</font> <font color="#993399">0</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line68">68:</a> <font color="#000000">}</font><br><br></tt> |
[GTK] 2. 버튼으로 Hellow orld 출력하기
1 |
<tt><a target="_blank" class="con_link" name="line1">01:</a> <b><font color="#008080">#include</font></b> <font color="#ff0000"><gtk/gtk.h></font><br><a target="_blank" class="con_link" name="line2">02:</a> <br><a target="_blank" class="con_link" name="line3">03:</a> <font color="#009900">//</font><font color="#009900"> GTK 공식 TUT에서 쓰는 함수이름이 헷갈려서 임의로 변경을 했다. (앞에 F 를 붙이는것으로)</font><br><a target="_blank" class="con_link" name="line4">04:</a> <font color="#009900">//</font><font color="#009900"> 또한 이 예제에서는 Hellow orld 버튼을 눌러도 창이 닫히지 않는다.</font><br><a target="_blank" class="con_link" name="line5">05:</a> <font color="#0000ff">static</font> <font color="#0000ff">void</font> <font color="#9a1900">Fhello</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> gpointer data <font color="#000000">)</font> <font color="#009900">//</font><font color="#009900"> 함수앞에 static은 써도그만 안써도그만</font><br><a target="_blank" class="con_link" name="line6">06:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line7">07:</a> <font color="#9a1900">g_print </font><font color="#000000">(</font><font color="#ff0000">"Hello World\n"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line8">08:</a> <font color="#009900">//</font><font color="#009900">glib를 사용한답시고 g_print 를 사용하던데 printf를 써도 별문제가 없더라.</font><br><a target="_blank" class="con_link" name="line9">09:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line10">10:</a> <br><a target="_blank" class="con_link" name="line11">11:</a> gboolean <font color="#9a1900">Fdelete_event</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> GdkEvent <font color="#000000">*</font>event<font color="#000000">,</font> gpointer data <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line12">12:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line13">13:</a> <font color="#9a1900">g_print </font><font color="#000000">(</font><font color="#ff0000">"delete event\n"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line14">14:</a> <font color="#0000ff">return</font> FALSE<font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 만약 TRUE를 해주면 창 오른쪽 상단의 X를 눌러도 창이 닫히지 않게된다.</font><br><a target="_blank" class="con_link" name="line15">15:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line16">16:</a> <br><a target="_blank" class="con_link" name="line17">17:</a> <font color="#0000ff">static</font> <font color="#0000ff">void</font> <font color="#9a1900">Fdestroy</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> gpointer data <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line18">18:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line19">19:</a> <font color="#9a1900">g_print </font><font color="#000000">(</font><font color="#ff0000">"destroy\n"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line20">20:</a> <font color="#9a1900">gtk_main_quit </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> GTK를 완전히 끝낸다 이함수를 써주지 않는다면 창이 종료되어도 </font><br><a target="_blank" class="con_link" name="line21">21:</a> <font color="#009900">//</font><font color="#009900"> 프로세스는 계속 실행중이게 된다. </font><br><a target="_blank" class="con_link" name="line22">22:</a> <font color="#009900">//</font><font color="#009900"> [root@localhost ~]# 이걸로 복귀하지 않는다는 말이다.</font><br><a target="_blank" class="con_link" name="line23">23:</a> <br><a target="_blank" class="con_link" name="line24">24:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line25">25:</a> <br><a target="_blank" class="con_link" name="line26">26:</a> <font color="#0000ff">int</font> <font color="#9a1900">main</font><font color="#000000">(</font> <font color="#0000ff">int</font> argc<font color="#000000">,</font> <font color="#0000ff">char</font> <font color="#000000">*</font>argv<font color="#000000">[</font><font color="#000000">]</font> <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line27">27:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line28">28:</a> GtkWidget <font color="#000000">*</font>window<font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 윈도우를 담을 위젯을 만들고</font><br><a target="_blank" class="con_link" name="line29">29:</a> GtkWidget <font color="#000000">*</font>button<font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 버튼을 담을 위젯을 하나 만들었다.</font><br><a target="_blank" class="con_link" name="line30">30:</a> <br><a target="_blank" class="con_link" name="line31">31:</a> <font color="#9a1900">gtk_init </font><font color="#000000">(</font><font color="#000000">&</font>argc<font color="#000000">,</font> <font color="#000000">&</font>argv<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> GTK를 사용하기위한 초기설정을 담당해준다</font><br><a target="_blank" class="con_link" name="line32">32:</a> <br><a target="_blank" class="con_link" name="line33">33:</a> window <font color="#000000">=</font> <font color="#9a1900">gtk_window_new </font><font color="#000000">(</font>GTK_WINDOW_TOPLEVEL<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 창을 만들어준다.</font><br><a target="_blank" class="con_link" name="line34">34:</a> <br><a target="_blank" class="con_link" name="line35">35:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"delete_event"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>Fdelete_event<font color="#000000">)</font><font color="#000000">,</font> NULL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line36">36:</a> <font color="#009900">//</font><font color="#009900"> delete_event 를 받으면 Fdelete_event() 를 호출해 주도록 한다.</font><br><a target="_blank" class="con_link" name="line37">37:</a> <br><a target="_blank" class="con_link" name="line38">38:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"destroy"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>Fdestroy<font color="#000000">)</font><font color="#000000">,</font> NULL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line39">39:</a> <font color="#009900">//</font><font color="#009900"> destroy 를 받으면 Fdestroy() 를 호출해 주도록 한다.</font><br><a target="_blank" class="con_link" name="line40">40:</a> <br><a target="_blank" class="con_link" name="line41">41:</a> <font color="#9a1900">gtk_container_set_border_width </font><font color="#000000">(</font><font color="#9a1900">GTK_CONTAINER </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#993399">10</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line42">42:</a> <font color="#009900">//</font><font color="#009900"> 윈도우의 여백을 10으로 지정한다.</font><br><a target="_blank" class="con_link" name="line43">43:</a> <br><a target="_blank" class="con_link" name="line44">44:</a> button <font color="#000000">=</font> <font color="#9a1900">gtk_button_new_with_label </font><font color="#000000">(</font><font color="#ff0000">"Hellow orld"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line45">45:</a> <font color="#009900">//</font><font color="#009900"> Hellow orld 라벨을 가지고 버튼을 하나 만든다</font><br><a target="_blank" class="con_link" name="line46">46:</a> <br><a target="_blank" class="con_link" name="line47">47:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"clicked"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>Fhello<font color="#000000">)</font><font color="#000000">,</font> NULL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line48">48:</a> <font color="#009900">//</font><font color="#009900"> button이 clicked 되면 Fhello() 함수를 호출해주도록 한다.</font><br><a target="_blank" class="con_link" name="line49">49:</a> <br><a target="_blank" class="con_link" name="line50">50:</a> <font color="#009900">/*</font><font color="#009900"> g_signal_connect_swapped (G_OBJECT (button), "clicked",</font><br><a target="_blank" class="con_link" name="line51">51:</a> <font color="#009900"> G_CALLBACK (gtk_widget_destroy),</font><br><a target="_blank" class="con_link" name="line52">52:</a> <font color="#009900"> G_OBJECT (window)); </font><font color="#009900">*/</font><br><a target="_blank" class="con_link" name="line53">53:</a> <font color="#009900">//</font><font color="#009900"> 위 함수는 button이 clicked 되면 window에 gtk_widget_destroy를 전달한다.</font><br><a target="_blank" class="con_link" name="line54">54:</a> <font color="#009900">//</font><font color="#009900"> 한말로 버튼이 눌려지면 윈도우를 종료시키는 루틴을 실행한다.</font><br><a target="_blank" class="con_link" name="line55">55:</a> <font color="#009900">//</font><font color="#009900"> 본 여기서는 사용하지 않았다.</font><br><a target="_blank" class="con_link" name="line56">56:</a> <br><a target="_blank" class="con_link" name="line57">57:</a> <font color="#9a1900">gtk_container_add </font><font color="#000000">(</font><font color="#9a1900">GTK_CONTAINER </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> button<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> window에 button을 더해준다(올려준다)</font><br><a target="_blank" class="con_link" name="line58">58:</a> <br><a target="_blank" class="con_link" name="line59">59:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 먼저 버튼을 보여준다.</font><br><a target="_blank" class="con_link" name="line60">60:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 창을 보여준다.</font><br><a target="_blank" class="con_link" name="line61">61:</a> <br><a target="_blank" class="con_link" name="line62">62:</a> <font color="#9a1900">gtk_main </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> GTK 루프이다, 키를 누르던가 하는 이벤트를 감시해준다.</font><br><a target="_blank" class="con_link" name="line63">63:</a> <br><a target="_blank" class="con_link" name="line64">64:</a> <font color="#0000ff">return</font> <font color="#993399">0</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line65">65:</a> <font color="#000000">}</font><br></tt> |
1 |
<br>콘솔에서 ./helloworld 를 쳐서 실행하면<br>버튼을 누를때마다 g_print ("Hello World\n"); 가 동작하는 모습을 볼수있다.<br>종료시에도 delete_event 와 destroy 를 볼수있다.<br>X윈도에서 더블클릭해서는 볼수 없다. |
[GTK] 1. 스타트, 빈창 만들기
1 |
<tt><a target="_blank" class="con_link" name="line1">01:</a> <b><font color="#008080">#include</font></b> <font color="#ff0000"><gtk/gtk.h></font><br><a target="_blank" class="con_link" name="line2">02:</a> <br><a target="_blank" class="con_link" name="line3">03:</a> <font color="#0000ff">int</font> <font color="#9a1900">main</font><font color="#000000">(</font> <font color="#0000ff">int</font> argc<font color="#000000">,</font> <font color="#0000ff">char</font> <font color="#000000">*</font>argv<font color="#000000">[</font><font color="#000000">]</font> <font color="#000000">)</font> <font color="#009900">//</font><font color="#009900"> 기본의 main문</font><br><a target="_blank" class="con_link" name="line4">04:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line5">05:</a> GtkWidget <font color="#000000">*</font>window<font color="#000000">;</font> <font color="#009900">//</font><font color="#009900">여기서 위젯을 하나 만들어준다.</font><br><a target="_blank" class="con_link" name="line6">06:</a> <br><a target="_blank" class="con_link" name="line7">07:</a> <font color="#9a1900">gtk_init </font><font color="#000000">(</font><font color="#000000">&</font>argc<font color="#000000">,</font> <font color="#000000">&</font>argv<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900">GTK 초기화를 해준다</font><br><a target="_blank" class="con_link" name="line8">08:</a> <br><a target="_blank" class="con_link" name="line9">09:</a> window <font color="#000000">=</font> <font color="#9a1900">gtk_window_new </font><font color="#000000">(</font>GTK_WINDOW_TOPLEVEL<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 위젯에 새 윈도우라고 정의해준다</font><br><a target="_blank" class="con_link" name="line10">10:</a> <font color="#009900">//</font><font color="#009900"> GTK_WINDOW_TOPLEVEL은 200*200사이즈의</font><br><a target="_blank" class="con_link" name="line11">11:</a> <font color="#009900">//</font><font color="#009900"> 자식없는 윈도우를 만들라 이거다.</font><br><a target="_blank" class="con_link" name="line12">12:</a> <br><a target="_blank" class="con_link" name="line13">13:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 작업이 끝난 window를 보여준다</font><br><a target="_blank" class="con_link" name="line14">14:</a> <br><a target="_blank" class="con_link" name="line15">15:</a> <font color="#9a1900">gtk_main </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> GTK 이벤트를 처리하기 위한 루프메인이다.</font><br><a target="_blank" class="con_link" name="line16">16:</a> <br><a target="_blank" class="con_link" name="line17">17:</a> <font color="#0000ff">return</font> <font color="#993399">0</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line18">18:</a> <font color="#000000">}</font><br></tt> |
1 |
<br>중요한 컴파일 방법은 // 물론 리눅스 쉘상에서;<br> <tt class="LITERAL"><span style="color: rgb(58, 50, 195);">gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`</span><br>간단히 분석하면<br>base.c를 컴파일하는데<br>-o 아웃파일로 base 를 만들어라,<br> ` 이것은 엔터옆의 ' 이게 아니라 탭 위에있는 ` / ~ 이걸 눌러줘야한다.<br>나머지는 모르겠다.</tt> |
[GTK] GTK 입문
컴파일 방법
gcc 소스파일 -o 실행파일
pkg-config --cflags --libs gtk+-2.0
~/.vimrc or ~/.gvimrc 파일에 다음 아랫줄을 넣어주면 vim에서 F10키루 컴파일이 가능함
map :w!:!clear;gcc % -o %<
pkg-config --cflags --libs gtk+-2.0
&& ./%<GTK+ 2.0 영문 튜토리얼
한글 ( 버젼은 확실히 모르겠다만 2.0은 아닌듯)
http://kldp.org/KoreanDoc/html/GtkTutorial/GtkTutorial.html