多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > 互聯(lián)網(wǎng) > Ubuntu下用glade和GTK+開發(fā)C語(yǔ)言界面程序(一)

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

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-10-14 00:40:08 閱讀次數(shù):3002次

前言:對(duì)于大學(xué)中計(jì)算機(jī)系的每年暑假的課設(shè)有太多想說(shuō)的,能從中學(xué)到很多東西,當(dāng)然不排除打醬油的,這些可以掠過(guò)哦,凡事都打醬油,人生也是打醬油的吧。2333。

對(duì)于大三以前的課設(shè)一般的要求都是用C寫的,即使你學(xué)的面向?qū)ο蠛芎茫仓荒芾侠蠈?shí)實(shí)的來(lái)用C寫。當(dāng)然這其中還有好多要說(shuō)道的東西。

用C寫,面對(duì)windows下的那不能再吐槽的cmd終端,我就不說(shuō)太多了,因?yàn)橐呀?jīng)很少到windows上做東西。用C寫,又想寫的高大上一點(diǎn),當(dāng)然要有圖形界面了,在linux上用C寫界面程序,GTK+是少不了的,但是運(yùn)用面向?qū)ο蟮乃枷雭?lái)說(shuō),如果讓代碼中夾雜著太多界面的東西,感覺(jué)你寫到幾千行的時(shí)候,你就分不出來(lái)那里是主要邏輯,那里是界面程序了。用MVC的思想來(lái)說(shuō),你得把主要邏輯來(lái)體現(xiàn)在你的主要算法上,界面來(lái)輔助更好的展現(xiàn)你的思想。那么,用Glade來(lái)畫界面,在代碼中寫主要算法邏輯,這樣就能很清晰把界面程序和主要算法邏輯分離開。使開發(fā)過(guò)程更快,同時(shí)也減少了寫界面的麻煩。同時(shí)用GTK+來(lái)寫一些用C語(yǔ)言實(shí)現(xiàn)的界面連接程序,方便galde畫出的界面能更好的工作。

好了,說(shuō)了這么多,先把主要要用到的東西來(lái)介紹一下。

主要環(huán)境:ubuntu14.04,當(dāng)然12.04也可以。

開發(fā)中要用到的工具:gcc編譯器,make命令,glade開發(fā)界面,GTK+的安裝,一個(gè)編輯程序的ide。

上面的編輯程序中我沒(méi)有用linux下的vim來(lái)寫,一個(gè)是自己還不太熟悉,同時(shí),寫一個(gè)比較大的工程的話來(lái)說(shuō),vim總覺(jué)得還不是太適合。

環(huán)境配置:

1、Glade的安裝可以到ubuntu的軟件中心中搜索安裝。這個(gè)是最簡(jiǎn)單的。也可以在命令行中用

<span style="font-size:18px;">sudo apt-get install glade</span>
來(lái)安裝。

2、make的安裝

直接在命令行中輸入

<span style="font-size:18px;">sudo apt-get install make</span>
來(lái)安裝。

3、對(duì)于gcc和GTK+,來(lái)說(shuō),一般安裝的linux中都有自帶的gcc和GTK+,這個(gè)可以不用在安裝,如果覺(jué)得gcc的版本比較低,可以更新gcc的版本。GTK+ 的版本為3.0以上。

安裝好以上程序后,可以檢驗(yàn)一下是否都能正常工作。

1、對(duì)于galde來(lái)說(shuō),按下win鍵,在出現(xiàn)的界面中輸入glade,點(diǎn)擊glade圖標(biāo),出現(xiàn)下面的界面說(shuō)明galde是可以運(yùn)行的。


同時(shí)也可以在命令行中輸入glade,同樣會(huì)打開glade程序。

2、gcc的檢驗(yàn)可以以最簡(jiǎn)單的C文件來(lái)檢驗(yàn)。

在編輯器中新建立一個(gè)HelloWorld.c程序。

<span style="font-size:18px;">#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { printf("HelloWorld!"); return 0; }</span>
保存文件后,在命令行中進(jìn)入到保存的上述文件的的文件夾下,輸入以下編譯命令,來(lái)編譯上述HelloWorld.c文件

<span style="font-size:18px;">gcc HelloWorld.c -o helloworld</span>
編譯上面命令后,會(huì)生成可執(zhí)行文件,HelloWorld,輸入

<span style="font-size:18px;">./HelloWorld 來(lái)運(yùn)行生成的HelloWorld程序。</span>
3、make的檢驗(yàn)

直接在命令行中輸入

<span style="font-size:18px;">make --version</span>
可以看到make的版本。


好了上面的環(huán)境都搭建完成后,可以跑一個(gè)最簡(jiǎn)單的測(cè)試程序。

Demo 測(cè)試。

在編輯器中新建立一個(gè)main.c文件,代碼如下

<span style="font-size:14px;">#include <stdlib.h> #include <gtk/gtk.h> //HelloWorld按鈕的回調(diào)函數(shù),也就是按下HelloWorld按鈕會(huì)執(zhí)行這個(gè)helloworld函數(shù) static void helloWorld (GtkWidget *wid, GtkWidget *win) { GtkWidget *dialog = NULL;//gtk中的控件 //創(chuàng)建一個(gè)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);//設(shè)置窗口的位置 gtk_dialog_run (GTK_DIALOG (dialog));//運(yùn)行上面創(chuàng)建的窗口 gtk_widget_destroy (dialog);//釋放窗口的界面內(nèi)存 } int main (int argc, char *argv[]) { GtkWidget *button = NULL; GtkWidget *win = NULL; GtkWidget *vbox = NULL; /* Initialize GTK+ *///初始化GTK+ 的代碼,這三行代碼不要?jiǎng)泳涂梢裕约旱拇a在下面寫 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出來(lái)一個(gè)主窗口 gtk_container_set_border_width (GTK_CONTAINER (win), 8);//設(shè)置窗口邊緣的大小 gtk_window_set_title (GTK_WINDOW (win), "Hello World");//設(shè)置窗口標(biāo)題 gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);//設(shè)置窗口位置 gtk_widget_realize (win);//實(shí)現(xiàn)上述窗口 g_signal_connect (win, "destroy", gtk_main_quit, NULL);//窗口信號(hào)連接,點(diǎn)擊關(guān)閉按鈕是會(huì)關(guān)閉窗口。 /* Create a vertical box with buttons */ vbox = gtk_vbox_new (TRUE, 6);創(chuàng)建一個(gè)Vbox容器 gtk_container_add (GTK_CONTAINER (win), vbox);//將創(chuàng)建的容器添加到上述創(chuàng)建的主窗口中 button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);//創(chuàng)建一個(gè)按鈕 g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);//設(shè)置按鈕的回調(diào)函數(shù),看到callback大家都應(yīng)該懂這個(gè)是回調(diào)函數(shù)的。 gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);//將創(chuàng)建的按鈕添加到上述的vbox中 //下面創(chuàng)建關(guān)閉按鈕,并將關(guān)閉按鈕的回調(diào)函數(shù)設(shè)置為系統(tǒng)的推出函數(shù)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);//顯示上述的創(chuàng)建的界面 gtk_main ();//開始整個(gè)主循環(huán)。 return 0; }</span>
上面的代碼中都做了詳細(xì)的注釋,看懂應(yīng)該不難。

保存上面的main.c文件后,在命令行中輸入

<span style="font-size:18px;">gcc -Wall -g -o main main.c `pkg-config --cflags --libs gtk+-3.0` -export-dynamic</span>

會(huì)進(jìn)行編譯main.c文件并生成可執(zhí)行文件main.

繼續(xù)輸入

<span style="font-size:18px;">./main</span>
運(yùn)行可執(zhí)行文件。會(huì)出現(xiàn)下面的界面。


點(diǎn)擊信息,會(huì)出現(xiàn)下面的HelloWorld信息界面。


好了,到這里所有的工作已經(jīng)做完了,接下來(lái)就可以進(jìn)行主要程序的開發(fā)。當(dāng)然,這還需要你學(xué)習(xí)一些其他的知識(shí),比如如何在glade中畫出你所要的界面,如何進(jìn)行界面信號(hào)和實(shí)際函數(shù)的連接。以及如何在代碼中關(guān)聯(lián)這些界面,和如何在代碼中執(zhí)行一些界面信息。

如何使用make來(lái)使編譯命令來(lái)更加簡(jiǎn)單智能。

這些只是我會(huì)結(jié)合我的課設(shè)中用到的一些來(lái)講解一下,當(dāng)然,畢竟能力有限,在上面和以后有講的不當(dāng)?shù)脑挘瑲g迎批評(píng)指正。

尊重原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處:http://write.blog.csdn.net/postedit/38944891


生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 99精品日韩| 最近最新高清中文字幕 | 亚洲精品图区 | 性欧美精品xxxx | 精品一区二区三区在线观看l | 亚洲成 人a影院青久在线观看 | 欧美日韩加勒比一区二区三区 | 亚洲精品综合久久 | 性欧美高清video | 久草在线综合 | 亚洲图片另类图片 | 成人欧美一区二区三区在线观看 | 日本无卡无吗中文免费 | 亚洲精品自拍区在线观看 | 69xx在线观看视频 | 亚洲一区二区三区欧美 | 成人不卡 | 国产欧美另类久久精品91 | 成人亚洲精品一区 | 日韩精品国产自在久久现线拍 | 欧美黑人猛交 | 日本xxx在线观看 | 亚洲精品国产精品国自产网站 | 欧美午夜理伦三级在线观看 | 在线看欧美成人中文字幕视频 | 欧美性播放| 国产成人一级片 | 最近中文字幕资源4 | 欧美一级精品高清在线观看 | 亚洲综合激情另类专区 | 高清不卡一区二区 | 337p日本欧美在线观看 | 中文字幕精品在线 | 在线午夜 | 成人不卡视频 | 日本免费一区二区三区最新vr | 国产综合久久久久久 | 国产欧美中文字幕 | 免费在线一区二区三区 | 2020国产精品 | 国产一级做性视频 |