上次我們已經知道了glade的基本使用方法了,現在我們用他來做點有用的事
先讓我們在上次建的window1中加點東西,
首先是一個vertical box,如圖:
然后是一個label,如圖:
之后再建個horizontal box,如圖:
而后來兩個button,如圖:
更改button和label的label、Border width、Padding、width、height、X pad,Y pad等位置參數,
如果你改過名字的話,下面的程序中調用的參數會有點變化。
自我感覺良好后,保存。大致如圖:
接下來的比較的關鍵部分了,我們造好了外表,現在要處理內在了。
添加幾個signal后保存,如下圖:
window1
count+1 button
quit? button
讓我們添加幾個函數到原來的程序中去
glade.c
? 1 #include <glade/glade.h>
? 2 #include <gtk/gtk.h>
? 3
? 4 static int count;
? 5
? 6 /*when we click the button ,we make count add one ,
? 7? *and show the answer on the label
? 8? */
? 9 void on_button1_clicked(gpointer userdata)
?10 {
?11???? gchar buf[16];
?12???? snprintf(buf,16,"%d",++count);
?13
?14???? printf("%s/n",buf);
?15???? gtk_label_set_label(GTK_LABEL(userdata),buf);
?16 }
?17
?18 /*when click the button quit,we wuit*/
?19 void on_button2_clicked(GtkButton *button, gpointer userdate)
?20 {
?21???? gtk_main_quit();
?22 }
?23
?24 int main(int argc, char **argv)
?25 {
?26
?27???? GladeXML *window;
?28
?29???? gtk_init(&argc, &argv);
?30
?31???? window=glade_xml_new("project6.glade",NULL,NULL);
?32
?33???? glade_xml_signal_autoconnect(window);
?34
?35???? gtk_main();
?36
?37???? return 0;
?38 }
有人一定奇怪最后沒有函數調用就實現了那上面的兩個signal都能用
libglade的文檔上是這么說的
The some_signal_handler_func function is not referenced anywhere in the program explicitely, but if any signals are defined in the interface description that use "some_signal_handler_func" as the handler name, then this function will automatically be connected.
可見是glade_xml_signal_autoconnect解決了這個問題。
下面讓我們重復之前的步驟編譯下
gcc -o window glade.c `pkg-config --libs --cflags libglade-2.0` -export-dynamic
如果更正出現的問題,接著./window
點擊擊上面的button測試下,沒問題?很好。
有問題,那么核對你的signal設置,必要時適當調整下button1的signal函數
good luck
先讓我們在上次建的window1中加點東西,
首先是一個vertical box,如圖:

然后是一個label,如圖:

之后再建個horizontal box,如圖:

而后來兩個button,如圖:

更改button和label的label、Border width、Padding、width、height、X pad,Y pad等位置參數,
如果你改過名字的話,下面的程序中調用的參數會有點變化。
自我感覺良好后,保存。大致如圖:

接下來的比較的關鍵部分了,我們造好了外表,現在要處理內在了。
添加幾個signal后保存,如下圖:
window1

count+1 button

quit? button

讓我們添加幾個函數到原來的程序中去
glade.c
? 1 #include <glade/glade.h>
? 2 #include <gtk/gtk.h>
? 3
? 4 static int count;
? 5
? 6 /*when we click the button ,we make count add one ,
? 7? *and show the answer on the label
? 8? */
? 9 void on_button1_clicked(gpointer userdata)
?10 {
?11???? gchar buf[16];
?12???? snprintf(buf,16,"%d",++count);
?13
?14???? printf("%s/n",buf);
?15???? gtk_label_set_label(GTK_LABEL(userdata),buf);
?16 }
?17
?18 /*when click the button quit,we wuit*/
?19 void on_button2_clicked(GtkButton *button, gpointer userdate)
?20 {
?21???? gtk_main_quit();
?22 }
?23
?24 int main(int argc, char **argv)
?25 {
?26
?27???? GladeXML *window;
?28
?29???? gtk_init(&argc, &argv);
?30
?31???? window=glade_xml_new("project6.glade",NULL,NULL);
?32
?33???? glade_xml_signal_autoconnect(window);
?34
?35???? gtk_main();
?36
?37???? return 0;
?38 }
有人一定奇怪最后沒有函數調用就實現了那上面的兩個signal都能用
libglade的文檔上是這么說的
The some_signal_handler_func function is not referenced anywhere in the program explicitely, but if any signals are defined in the interface description that use "some_signal_handler_func" as the handler name, then this function will automatically be connected.
可見是glade_xml_signal_autoconnect解決了這個問題。
下面讓我們重復之前的步驟編譯下
gcc -o window glade.c `pkg-config --libs --cflags libglade-2.0` -export-dynamic
如果更正出現的問題,接著./window
點擊擊上面的button測試下,沒問題?很好。
有問題,那么核對你的signal設置,必要時適當調整下button1的signal函數
good luck
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
