ACTom 发表于 2011-6-23 07:10:32

2、简单的GTK+事件绑定

描述:利用g_signal_connect实现事件绑定,通过绑定按钮的点击事件,完成所需要的操作。如下图,点击+按钮,右侧数字加1,点击-按钮,右侧数字减1。
目标:
http://gtk.awaysoft.com/gtk2-tut2/images/plusminus.png

示例代码:
**** Hidden Message *****

ekd123 发表于 2011-7-21 15:17:46

have a look

operaes 发表于 2011-8-29 07:56:17

我看看是如何的.

l394743521 发表于 2011-9-8 19:47:38

看看哈哈

l394743521 发表于 2011-9-8 19:57:08

呵呵 运行出来了 不错哈哈


有点小bug,不知道是不是我编译器的问题,第11行和第19行报错了,改了如下:
gtk_label_set_text(GTK_LABEL(label), buf);

白浪 发表于 2011-9-23 23:56:47

我还没有回?

尚楠 发表于 2011-11-5 18:58:09

看看!

mryboy 发表于 2011-11-19 00:12:23

”本部分内容设定了隐藏,需要回复后才能看到“
——————太JB恶心了,还没看就回复,什么逻辑呢?

伽岚 发表于 2011-11-28 08:18:57

看看内容的说!!!

jackprince 发表于 2011-12-7 16:11:44

#include <gtk/gtk.h>

static gint count_temp=0;

void add(GtkWidget *widget, gpointer data)
{
    count_temp++;
    g_print("%d\\n",count_temp);
}

void sub(GtkWidget *widget, gpointer data)
{
    count_temp--;
    g_print("%d\\n",count_temp);
}

gint delete_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
{
    gtk_main_quit();
    return FALSE;
}

int main (int argc, int *argv[])
{
    GtkWidget *win;
    GtkWidget *btn1,*btn2;
    GtkWidget *box;

    //初始化
    gtk_init(&argc,&argv);

    //建立窗体并初始各项参数
    win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(G_OBJECT(win),"My Second GTK Programme!");
    g_signal_connect(G_OBJECT(win),"delete_event",G_CALLBACK(delete_event),NULL);
    gtk_window_set_position(GTK_WINDOW(win),GTK_WIN_POS_CENTER);
    gtk_container_border_width(G_OBJECT(win),10);

    btn1=gtk_button_new_with_label("+");
    btn2=gtk_button_new_with_label("-");

    box=gtk_vbox_new(TRUE,0);
    gtk_box_pack_start(GTK_BOX(box),btn1,TRUE,FALSE,10);
    gtk_box_pack_start(GTK_BOX(box),btn2,TRUE,FALSE,10);
    gtk_container_add(GTK_CONTAINER(win),box);

    //四参数分别是:信号发送源对象,连接信号名称,
    //捕获信号时所需调用的函数,传给此函数的参数。
    g_signal_connect(G_OBJECT(btn1),"clicked",G_CALLBACK(add),NULL);
    g_signal_connect(G_OBJECT(btn2),"clicked",G_CALLBACK(sub),NULL);

    gtk_widget_show_all(win);

    gtk_main();
    return 0;
}

注:搞不定label,不知道在GTK里怎么把整形变量转为字符传给label。只能把结果显示在console模式下了。
页: [1] 2 3
查看完整版本: 2、简单的GTK+事件绑定