在編寫程式碼之前,先初步的認識瞭解一下什麼是GTK+。
GTK+(GIMP Toolkit)是一套原始碼以LGPL許可協議分發、跨平臺的圖形工具包。也就是說,它是一個庫,它支援建立基於 GUI 的應用程式。可以把GTK+想像成一個工具包,從這個工具包中可以找到用來建立GUI的許多已經準備好的構造塊。最初GTK+是作為一個著名的開放原始碼專案 —— GIMP(GNU Image Manipulation Program)的副產品而建立的,現在已成為一個功能強大、設計靈活的一個通用圖形庫,是GNU/Linux下開發圖形介面的應用程式的主流開發工具之一。GTK+雖然是用C語言寫的,但是您可以使用你熟悉的語言來使用GTK+,例如可以用:C++,PHP, Guile,Perl, Python, TOM, Ada95, Objective C等語言來編寫自己的GUI應用程式。
如果你在學習完C語言想要擺脫在學習中的黑框框,GTK+是一個很不錯的選擇。學習起來相對簡單,容易上手。在隨後的教程中我們使用的是GTK+3.0這個版本來編寫我們的介面程式,在Linux系統中GTK+3.0的環境搭建也十分的簡單,一條命令即可:
sudo apt-get install libgtk3.0*。
該命令執行完後,可以測試是否安裝成功:
pkg-config --cflags --libs gtk+-3.0
表明GTK+3.0安裝成功
安裝完成後,我們就可以用幾個簡短的程式碼來編寫一個帶視窗的C語言程式。
/*一個簡單的視窗base.c*/
#include <gtk/gtk.h>
int main(int argc, char * argv[])
{
GtkWidget * window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
retrun FALSE;
}
編譯程式碼:gcc -o base base.c `pkg-config --cflags --libs gtk+-3.0`
介面出來了
執行成功,終於可以看到了一個自己編寫的帶介面的小程式了,雖然它什麼也不能做,至少不是一個黑框框了。
下面我們來分析一下上面的程式碼是什麼意思:
1.設定include檔案與宣告主函式
首先是#include<gtk/gtk.h>語句,這是每個GTK+3.0程式都要包含的標頭檔案。然後是函式宣告int main(int argc, char * argv[]),這是標準的c語言主函式的宣告。
2.宣告變數
GtkWidget * window;聲明瞭視窗控制元件指標。其中GtkWidget是GTK+3.0控制元件型別,幾乎所有的GTK+3.0控制元件都是這一類宣告;window是一個變數名,當然也可以給它起一個其他的名字,諸如ss這樣的名字,不過並不建議這樣做,這樣只會令程式碼閱讀起來更難,所以最好起一個易於理解的變數名,比如window。
3.初始化GTK+3.0的命令列引數
函式gtk_init(&argc, &argv);初始化命令列引數,這在GTK+3.0程式中是必需的,不管你的設計中是否使用到命令列引數,都需要用這一函式來初始化。
4.建立視窗
程式碼行window = gtk_window_new(GTK_WINDOW_TOPLEVEL);用來建立視窗。函式gtk_window_new()建立一個視窗並返回這個視窗的控制元件指標,在這裡這個指標的賦值給了變數window;引數GTK_WINDOW_TOPLEVEL指明瞭視窗的型別為最上層的主視窗,它最常用。當然也可以去取另一個值GTK_WINDOW_POPUP指明視窗的型別是彈出式的無邊框的視窗。
5.顯示視窗
程式碼行gtk_widget_show(window);用來顯示上一步建立的視窗。函式gtk_widget_show是用來顯示控制元件的,它沒有返回型別,引數是要顯示的控制元件指標,在這裡是視窗window,所以視窗就顯示出來了。
6.主事件迴圈
最後這個函式gkt_main();是最關鍵的,它是GTK+3.0的主事件迴圈,每一個GTK+3.0程式都要有一個,否則程式就無法執行。所謂的事件迴圈指的是GUI程式執行時等待來自外部使用者發出的事件,如鍵盤按鍵或者滑鼠移動等,GTK+3.0將這些事件包裝成訊號,使用者再根據訊號的功能編寫相應的回撥函式來處理這些事件。在這段程式碼中並沒有寫回調函式,所以這只是一個死迴圈,不做任何反應。
程式碼最後返回邏輯值FALSE,它相當於整型0。
7.編譯執行
gcc -o base base.c `pkg-config --cflags --libs gtk+-3.0`,在終端上輸入這麼長一串命令非常繁瑣而且容易出錯,如果長時間不用的話還有可能忘記這串命令。幸好Linux提供了make工具,這樣直接編輯好make的配置檔案Makefile,在命令列中直接輸入命令make就可以編譯了,編譯結束後輸入命令./base就可以執行這個程式了。
注意:$(CC)前面不是空格,而是Tab,如果寫成空格的話執行make命令會出錯。
在命令列中的`pkg-config --cflags --libs gtk+-3.0`這段命令的意思是向編譯器指出了包含檔案的路徑,動態連結庫路徑和要連結那些動態連結庫。pkg-config是GTK+3.0和GNOME2系統必備的軟體包配置和管理工具,可以在命令列中直接執行。
至此,完成了最簡單的變數的宣告、視窗的建立、顯示。瞭解GTK+3.0程式的一般結構、GTK+3.0程式中的兩個關鍵步驟:gtk_init和gtk_main。這些都是GTK+3.0程式必備的,為下面進一步學習GTK+3.0程式設計打下基礎。