上次我们已经知道了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