開發環境
Fedora 12
GTK+2.0
需要安裝下面兩個軟件包:
yum install gtk2
yum install gtk2-devel
最簡單的GTK程序
先寫一個最簡單的例子,顯示一個空白的窗口:
[cpp]
- #include <gtk/gtk.h> //gtk程序所需的頭文件
-
- int main(int argc,char *argv[])
- {
- GtkWidget *window; //定義一個構件指針
-
- gtk_init(&argc,&argv); //初始化GTK環境
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);//新建一個標准的有框架窗口
-
- gtk_widget_show(window); //顯示window
-
- gtk_main();//啟動GTK
-
- return 1;
- }
編譯:
gcc -Wall -o helloworld helloworld.c `pkg-config --cflags --libs gtk+-2.0`
執行:
./helloworld
效果:
簡單的窗口設置
這個窗口的標題是可執行文件的名稱,而且顯示在桌面的左上角,這些都可以在程序裡設置,修改後的程序如下:
[cpp]
- #include <gtk/gtk.h>
-
- int main(int argc,char *argv[])
- {
- GtkWidget *window;
-
- gtk_init(&argc,&argv);
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
- gtk_window_set_title(GTK_WINDOW(window),"My first GTK"); //定義窗口的標題
- gtk_window_set_default_size(GTK_WINDOW(window),200,200); //設置窗口的大小
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_MOUSE); //設置窗口顯示的位置為鼠標的位置
-
- gtk_widget_show(window);
-
- gtk_main();
-
- return 1;
- }
事件和信號:
這個程序還有一個問題,點擊窗口上的關閉後,程序並沒用推出,需要用Ctrl-C結束程序,這是因為程序沒用對關閉窗口的事件進行處理,需要用g_signal_connect函數,它的作用是將事件的信號與相應的回調函數綁定。關閉窗口時會發出“destroy”信號,修改程序如下:
[cpp]
- #include <gtk/gtk.h>
-
- void close_app(GtkWidget *window,gpointer data)
- {
- gtk_main_quit();//退出gtk_main
- }
-
- int main(int argc,char *argv[])
- {
- GtkWidget *window;
-
- gtk_init(&argc,&argv);
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
- gtk_window_set_title(GTK_WINDOW(window),"My first GTK");
- gtk_window_set_default_size(GTK_WINDOW(window),200,200);
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_MOUSE);
-
- //將destroy信號綁定close_app函數
- g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(close_app),NULL);
-
- gtk_widget_show(window);
-
- gtk_main();
-
- return 1;
- }