歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

GTK+學習筆記

開發環境

Fedora 12

GTK+2.0

需要安裝下面兩個軟件包:

yum  install  gtk2

yum  install  gtk2-devel


最簡單的GTK程序

先寫一個最簡單的例子,顯示一個空白的窗口:

[cpp]
  1. #include <gtk/gtk.h>  //gtk程序所需的頭文件   
  2.   
  3. int  main(int argc,char *argv[])  
  4. {  
  5.     GtkWidget *window;  //定義一個構件指針   
  6.   
  7.     gtk_init(&argc,&argv);  //初始化GTK環境   
  8.   
  9.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);//新建一個標准的有框架窗口   
  10.   
  11.     gtk_widget_show(window); //顯示window   
  12.   
  13.     gtk_main();//啟動GTK   
  14.   
  15.     return 1;  
  16. }  
編譯:

gcc -Wall -o helloworld  helloworld.c `pkg-config --cflags --libs gtk+-2.0`

執行:

./helloworld

效果:



簡單的窗口設置

這個窗口的標題是可執行文件的名稱,而且顯示在桌面的左上角,這些都可以在程序裡設置,修改後的程序如下:

[cpp]
  1. #include <gtk/gtk.h>   
  2.   
  3. int  main(int argc,char *argv[])  
  4. {  
  5.     GtkWidget *window;  
  6.   
  7.     gtk_init(&argc,&argv);  
  8.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  
  9.   
  10.     gtk_window_set_title(GTK_WINDOW(window),"My first GTK");   //定義窗口的標題   
  11.     gtk_window_set_default_size(GTK_WINDOW(window),200,200);   //設置窗口的大小   
  12.     gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_MOUSE);   //設置窗口顯示的位置為鼠標的位置   
  13.   
  14.     gtk_widget_show(window);  
  15.   
  16.     gtk_main();  
  17.   
  18.     return 1;  
  19. }  
事件和信號:

這個程序還有一個問題,點擊窗口上的關閉後,程序並沒用推出,需要用Ctrl-C結束程序,這是因為程序沒用對關閉窗口的事件進行處理,需要用g_signal_connect函數,它的作用是將事件的信號與相應的回調函數綁定。關閉窗口時會發出“destroy”信號,修改程序如下:

[cpp]
  1. #include <gtk/gtk.h>   
  2.   
  3. void close_app(GtkWidget *window,gpointer data)  
  4. {  
  5.     gtk_main_quit();//退出gtk_main   
  6. }  
  7.   
  8. int main(int argc,char *argv[])  
  9. {  
  10.     GtkWidget *window;  
  11.   
  12.     gtk_init(&argc,&argv);  
  13.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  
  14.   
  15.     gtk_window_set_title(GTK_WINDOW(window),"My first GTK");  
  16.     gtk_window_set_default_size(GTK_WINDOW(window),200,200);  
  17.     gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_MOUSE);  
  18.   
  19.     //將destroy信號綁定close_app函數   
  20.     g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(close_app),NULL);  
  21.   
  22.     gtk_widget_show(window);  
  23.   
  24.     gtk_main();  
  25.   
  26.     return 1;  
  27. }  
Copyright © Linux教程網 All Rights Reserved