Linux操作系統(tǒng)下GTK界面編程
今天,開始在工作之余,抽出時間來學習linux界面編程。我計劃在未來的半年內(nèi),學會 linux下的GTK+界面編程。這個文檔作為我學習linux編程的***個文檔,我會盡量做的詳 細一點。我所用的linux版本是Red Hat 9.0。
***個程序——Hello,World
在開始寫***個程序之前,需要做一點基本操作。
我登陸linux使用的是root用戶(根用戶,也叫超級用戶)。所以,所有筆記中產(chǎn)生的截圖,均是root用戶下的。
一、在linux桌面點擊右鍵,在快捷菜單中選擇“新建終端”選項,打開類似DOS的窗口。
二、使用mkdir命令創(chuàng)建一個文件夾,文件夾命名為gtkgui,命令輸入為:mkdir gtkgui
輸入完畢后敲回車鍵即可創(chuàng)建目錄gtkgui,需要注意的是該目錄的路徑是:/root/gtktui
三、使用cd命令進入目錄gtkgui 命令輸入:cd gtkgui
輸入命令后敲回車鍵即可進入目錄gtkgui
四、創(chuàng)建***個程序存放的目錄,和***步一樣,這次在gtkgui目錄下創(chuàng)建一個子目錄1gui 然后進入1gui目錄。創(chuàng)建目錄命令:mkdir 1gui 進入目錄命令:cd lgui 命令界面輸入。
(注意1gui***個字符是“一”,不是小寫的L)。
小提示:若你想查看當前目錄的絕對路徑??梢栽诮K端敲入命令:pwd
現(xiàn)在可以清楚的看到當前工作目錄是“/root/gtkgui/1gui”。
五、編寫代碼,在開始寫***個程序之前,說說VI編輯器。假設(shè)要寫的程序是firstgui.c,則在終端中敲入 vi firstgui.c 然后回車,就進入編輯文件firstgui.c狀態(tài)了,VI命令后面的文件若存在,則直接打開,若不存在,則新建一個。進入文件編輯狀態(tài)后,必須按a鍵, 才可向文件輸入東西,當編輯完后,按esc鍵退出編輯模式,再按shift+;鍵,***輸入wq(write and quit)退出 VI。好了,在寫程序中,再說一遍就記住了。
1、 創(chuàng)建 firstgui.c并編輯它
命令:vi first.c 然后敲回車進入編輯模式
必須先按下 a 鍵(還有其他的鍵也可(如i鍵),不過我覺得按下a鍵比較方便)才可輸入字符,現(xiàn)在按一下a鍵,終端變成圖1.8所示的效果。
按一下a鍵后(注意左下方有個--插入--),進入編輯模式
現(xiàn)在開始輸入***個程序的代碼,代碼原型如下:
- #include
- int main(int argc,char*argv[])
- {
- GtkWidget *window;
- gtk_init(&argc,&argv);
- window=gtk_window_new(GKT_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window),”Hello,World”);
- gtk_widget_show(window);
- gtk_main();
- return 0;
- }
現(xiàn)在代碼輸入完畢,需要保存文件并推出編輯器,先按一下esc鍵退出編輯模式,然后按組合鍵:shift+;鍵 ***輸入wq并敲回車鍵就保存了文件并退出編輯模式了。退出VI后的界面如圖1.20所示。
使用ll命令(小寫的LL)查看剛才編寫的firstgui.c是否存在。
若想看文件內(nèi)容,使用cat firstgui.c 命令就可看到文件firstgui.c的內(nèi)容了。
六、編譯代碼
在終端敲入下列命令及參數(shù),編譯連接程序
命令及參數(shù):gcc firstgui.c -o firstgui `pkg-config --cflags --libs gtk+-2.0`
命令說明: gcc 編譯命令
firstgui.c 源程序文件名
-o 編譯參數(shù),(不是0(零),是opq的o)
firstgui 編譯連接后的可執(zhí)行文件名,可以為任意合法的文件名
` 這個符號是和~呆在一起的那個鍵上,不要誤認為是單引號‘
pkg后面與-config之間沒有空格
cflags 前面是兩個短線 --
libs前面也是兩個短線 --
七、運行程序
鍵入 ./firstgui 后回車便可看到效果了。
需要注意的是,該程序當你點擊窗口右上角上的小X關(guān)閉窗口時,窗口倒是關(guān)閉了。但是程序還在運行,你必須在終端下按組合鍵:Ctrl+c來關(guān)閉進程。
八、程序分析
GtkWidget *window; 相當于Windows下的
WNDCLASS
結(jié)構(gòu)體,不過window在此只是一個窗口指針,用于指向函數(shù)gtk_window_new()函數(shù)返回的窗口地址而已。
gtk_init(&argc,&argv);
初始化界面庫等一系列操作的函數(shù),當其調(diào)用失敗時,其將終止我們的程序,目前只要記住在編寫任何窗口函數(shù)之前,都保證該函數(shù)是***個被調(diào)用的就行了。
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
該函數(shù)創(chuàng)建一個新的GtkWidget對象(目前我認為其就是創(chuàng)建了一個還沒有顯示的窗 口),并返回該對象的指針。該函數(shù)參數(shù)僅有兩個,其中一個是上面的GTK_WINDOW_TOPLEVEL,表示創(chuàng)建一個“主窗口”,另一個則是 GTK_WINDOW_POPUP,表示創(chuàng)建一個彈出窗口。
gtk_window_set_title(GTK_WINDOW(window),”Hello,World”);該函數(shù)設(shè)置窗口的標題。
gtk_widget_show(window); 該函數(shù)將窗口顯示出來。
gtk_main();該函數(shù)捕獲一些消息吧。在沒有調(diào)用函數(shù)gtk_main_quit()函數(shù)之前,即使你關(guān)閉窗口,進程也不關(guān)閉的原因就在此。
八、總結(jié)
創(chuàng)建窗口主要步驟:
1、GtkWidget *window;
2、gtk_init(&argc,&argv);
3、windows=gtk_window_new(GTK_WINDOW_TOPLEVEL);
4、gtk_widget_show(window);
5、gtk_main();
***,注意編譯命令。后面的那些參數(shù)。
目前,X窗口(Xwindow)和GNU編譯系統(tǒng)已成為應(yīng)用linux或unix操作系統(tǒng)的計算機工作站和大型計算機上最主要的圖形用戶界面系統(tǒng)。而GTK正是兩者結(jié)合的編程開發(fā)包,它比以往用的Xwindow/Motif編程更為簡單方便,功能也很強大。所以,我想會有著較好的應(yīng)用前景。這是我的心得體會,希望能夠?qū)Υ蠹矣兴鶐椭?/P>
【編輯推薦】