1. 程式人生 > >Ubuntu下用glade和GTK+開發C語言界面程序(一)

Ubuntu下用glade和GTK+開發C語言界面程序(一)

命令行 簡單的 暑假 all 位置 相同 write 3.0 面向對象的思想

前言:對於大學中計算機系的每年暑假的課設有太多想說的,能從中學到非常多東西,當然不排除打醬油的,這些能夠掠過哦,凡事都打醬油。人生也是打醬油的吧。

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


Ubuntu下用glade和GTK+開發C語言界面程序(一)