上次我們已經(jīng)知道了glade的基本使用方法了,現(xiàn)在我們用他來(lái)做點(diǎn)有用的事
先讓我們?cè)谏洗谓ǖ膚indow1中加點(diǎn)東西,
首先是一個(gè)vertical box,如圖:
然后是一個(gè)label,如圖:
之后再建個(gè)horizontal box,如圖:
而后來(lái)兩個(gè)button,如圖:
更改button和label的label、Border width、Padding、width、height、X pad,Y pad等位置參數(shù),
如果你改過(guò)名字的話,下面的程序中調(diào)用的參數(shù)會(huì)有點(diǎn)變化。
自我感覺良好后,保存。大致如圖:
接下來(lái)的比較的關(guān)鍵部分了,我們?cè)旌昧送獗恚F(xiàn)在要處理內(nèi)在了。
添加幾個(gè)signal后保存,如下圖:
window1
count+1 button
quit? button
讓我們添加幾個(gè)函數(shù)到原來(lái)的程序中去
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 }
有人一定奇怪最后沒有函數(shù)調(diào)用就實(shí)現(xiàn)了那上面的兩個(gè)signal都能用
libglade的文檔上是這么說(shuō)的
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解決了這個(gè)問(wèn)題。
下面讓我們重復(fù)之前的步驟編譯下
gcc -o window glade.c `pkg-config --libs --cflags libglade-2.0` -export-dynamic
如果更正出現(xiàn)的問(wèn)題,接著./window
點(diǎn)擊擊上面的button測(cè)試下,沒問(wèn)題?很好。
有問(wèn)題,那么核對(duì)你的signal設(shè)置,必要時(shí)適當(dāng)調(diào)整下button1的signal函數(shù)
good luck
先讓我們?cè)谏洗谓ǖ膚indow1中加點(diǎn)東西,
首先是一個(gè)vertical box,如圖:

然后是一個(gè)label,如圖:

之后再建個(gè)horizontal box,如圖:

而后來(lái)兩個(gè)button,如圖:

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

接下來(lái)的比較的關(guān)鍵部分了,我們?cè)旌昧送獗恚F(xiàn)在要處理內(nèi)在了。
添加幾個(gè)signal后保存,如下圖:
window1

count+1 button

quit? button

讓我們添加幾個(gè)函數(shù)到原來(lái)的程序中去
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 }
有人一定奇怪最后沒有函數(shù)調(diào)用就實(shí)現(xiàn)了那上面的兩個(gè)signal都能用
libglade的文檔上是這么說(shuō)的
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解決了這個(gè)問(wèn)題。
下面讓我們重復(fù)之前的步驟編譯下
gcc -o window glade.c `pkg-config --libs --cflags libglade-2.0` -export-dynamic
如果更正出現(xiàn)的問(wèn)題,接著./window
點(diǎn)擊擊上面的button測(cè)試下,沒問(wèn)題?很好。
有問(wèn)題,那么核對(duì)你的signal設(shè)置,必要時(shí)適當(dāng)調(diào)整下button1的signal函數(shù)
good luck
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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