前言:對於大學中計算機系的每年暑假的課設有太多想說的,能從中學到非常多東西,當然不排除打醬油的,這些能夠掠過哦,凡事都打醬油。人生也是打醬油的吧。
2333。
對於大三曾經的課設一般的要求都是用C寫的,即使你學的面向對象非常好。也僅僅能老老實實的來用C寫。
當然這當中還有好多要說道的東西。
用C寫。面對windows下的那不能再吐槽的cmd終端,我就不說太多了。由於已經非常少到windows上做東西。用C寫,又想寫的高大上一點。當然要有圖形界面了。在linux上用C寫界面程序。GTK+是少不了的,可是運用面向對象的思想來說,假設讓代碼中夾雜着太多界面的東西。感覺你寫到幾千行的時候,你就分不出來那里是主要邏輯,那里是界面程序了。
用MVC的思想來說,你得把主要邏輯來體如今你的主要算法上,界面來輔助更好的展現你的思想。
那么,用Glade來畫界面。在代碼中寫主要算法邏輯,這樣就能非常清晰把界面程序和主要算法邏輯分離開。使開發過程更快,同一時候也降低了寫界面的麻煩。同一時候用GTK+來寫一些用C語言實現的界面連接程序,方便galde畫出的界面能更好的工作。
好了,說了這么多。先把主要要用到的東西來介紹一下。
主要環境:ubuntu14.04,當然12.04也能夠。
開發中要用到的工具:gcc編譯器,make命令,glade開發界面,GTK+的安裝,一個編輯程序的ide。
上面的編輯程序中我沒實用linux下的vim來寫,一個是自己還不太熟悉,同一時候,寫一個比較大的project的話來說,vim總認為還不是太適合。
環境配置:
1、Glade的安裝能夠到ubuntu的軟件中心中搜索安裝。這個是最簡單的。
也能夠在命令行中用
<span style="font-size:18px;">sudo apt-get install glade</span>來安裝。
2、make的安裝
直接在命令行中輸入
<span style="font-size:18px;">sudo apt-get install make</span>來安裝。
3、對於gcc和GTK+,來說,一般安裝的linux中都有自帶的gcc和GTK+,這個能夠不用在安裝,假設認為gcc的版本號比較低。能夠更新gcc的版本號。GTK+ 的版本號為3.0以上。
安裝好以上程序后,能夠檢驗一下是否都能正常工作。
1、對於galde來說,按下win鍵,在出現的界面中輸入glade,點擊glade圖標,出現以下的界面說明galde是能夠執行的。
同一時候也能夠在命令行中輸入glade,相同會打開glade程序。
2、gcc的檢驗能夠以最簡單的C文件來檢驗。
在編輯器中新建立一個HelloWorld.c程序。
<span style="font-size:18px;">#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { printf("HelloWorld!"); return 0; }</span>保存文件后,在命令行中進入到保存的上述文件的的目錄下,輸入下面編譯命令。來編譯上述HelloWorld.c文件
<span style="font-size:18px;">gcc HelloWorld.c -o helloworld</span>編譯上面命令后,會生成可運行文件,HelloWorld。輸入
<span style="font-size:18px;">./HelloWorld 來執行生成的HelloWorld程序。</span>3、make的檢驗
直接在命令行中輸入
<span style="font-size:18px;">make --version</span>能夠看到make的版本號。
好了上面的環境都搭建完畢后。能夠跑一個最簡單的測試程序。
Demo 測試。
在編輯器中新建立一個main.c文件。代碼例如以下
<span style="font-size:14px;">#include <stdlib.h> #include <gtk/gtk.h> //HelloWorld按鈕的回調函數,也就是按下HelloWorld按鈕會執行這個helloworld函數 static void helloWorld (GtkWidget *wid, GtkWidget *win) { GtkWidget *dialog = NULL;//gtk中的控件 //創建一個dialog窗體。上面的信息為Hello World! dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!"); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);//設置窗體的位置 gtk_dialog_run (GTK_DIALOG (dialog));//執行上面創建的窗體 gtk_widget_destroy (dialog);//釋放窗體的界面內存 } int main (int argc, char *argv[]) { GtkWidget *button = NULL; GtkWidget *win = NULL; GtkWidget *vbox = NULL; /* Initialize GTK+ *///初始化GTK+ 的代碼,這三行代碼不要動就能夠,自己的代碼在以下寫 g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL); gtk_init (&argc, &argv); g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL); /* Create the main window */ win = gtk_window_new (GTK_WINDOW_TOPLEVEL);//new出來一個主窗體 gtk_container_set_border_width (GTK_CONTAINER (win), 8);//設置窗體邊緣的大小 gtk_window_set_title (GTK_WINDOW (win), "Hello World");//設置窗體標題 gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);//設置窗體位置 gtk_widget_realize (win);//實現上述窗體 g_signal_connect (win, "destroy", gtk_main_quit, NULL);//窗體信號連接,點擊關閉按鈕是會關閉窗體。 /* Create a vertical box with buttons */ vbox = gtk_vbox_new (TRUE, 6);創建一個Vbox容器 gtk_container_add (GTK_CONTAINER (win), vbox);//將創建的容器加入到上述創建的主窗體中 button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);//創建一個按鈕 g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);//設置按鈕的回調函數,看到callback大家都應該懂這個是回調函數的。 gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);//將創建的按鈕加入到上述的vbox中 //以下創建關閉按鈕,並將關閉按鈕的回調函數設置為系統的推出函數gtk_main_quit。 button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); g_signal_connect (button, "clicked", gtk_main_quit, NULL); gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0); /* Enter the main loop */ gtk_widget_show_all (win);//顯示上述的創建的界面 gtk_main ();//開始整個主循環。 return 0; }</span>上面的代碼中都做了具體的凝視。看懂應該不難。
保存上面的main.c文件后,在命令行中輸入
<span style="font-size:18px;">gcc -Wall -g -o main main.c `pkg-config --cflags --libs gtk+-3.0` -export-dynamic</span>
會進行編譯main.c文件並生成可運行文件main.
繼續輸入
<span style="font-size:18px;">./main</span>執行可執行文件。
會出現以下的界面。
點擊信息,會出現以下的HelloWorld信息界面。
好了,到這里全部的工作已經做完了,接下來就能夠進行主要程序的開發。
當然。這還須要你學習一些其它的知識。比方怎樣在glade中畫出你所要的界面。怎樣進行界面信號和實際函數的連接。
以及怎樣在代碼中關聯這些界面。和怎樣在代碼中運行一些界面信息。
怎樣使用make來使編譯命令來更加簡單智能。
這些僅僅是我會結合我的課設中用到的一些來解說一下,當然,畢竟能力有限。在上面和以后有講的不當的話,歡迎批評指正。
尊重原創,歡迎轉載,轉載請注明出處:http://write.blog.csdn.net/postedit/38944891