设为首页收藏本站

GTK+中文社区(gtk.awaysoft.com)

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 7967|回复: 25

2、简单的GTK+事件绑定

[复制链接]
  • TA的每日心情
    奋斗
    2016-10-11 09:20
  • 签到天数: 271 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2011-6-23 07:10:32 | 显示全部楼层 |阅读模式
    描述:利用g_signal_connect实现事件绑定,通过绑定按钮的点击事件,完成所需要的操作。如下图,点击+按钮,右侧数字加1,点击-按钮,右侧数字减1。
    目标:


    示例代码:
    游客,如果您要查看本帖隐藏内容请回复
  • TA的每日心情
    慵懒
    2013-7-6 15:08
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]初来乍到

    发表于 2011-7-21 15:17:46 | 显示全部楼层
    have a look

    该用户从未签到

    发表于 2011-8-29 07:56:17 | 显示全部楼层
    我看看是如何的.

    该用户从未签到

    发表于 2011-9-8 19:47:38 | 显示全部楼层
    看看哈哈

    该用户从未签到

    发表于 2011-9-8 19:57:08 | 显示全部楼层
    呵呵 运行出来了 不错哈哈


    有点小bug,不知道是不是我编译器的问题,第11行和第19行报错了,改了如下:
    gtk_label_set_text(GTK_LABEL(label), buf);
  • TA的每日心情
    奋斗
    2015-10-16 12:17
  • 签到天数: 401 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2011-9-23 23:56:47 | 显示全部楼层
    我还没有回?

    该用户从未签到

    发表于 2011-11-5 18:58:09 | 显示全部楼层
    看看!

    该用户从未签到

    发表于 2011-11-19 00:12:23 | 显示全部楼层
    本部分内容设定了隐藏,需要回复后才能看到“
    ——————太JB恶心了,还没看就回复,什么逻辑呢?

    该用户从未签到

    发表于 2011-11-28 08:18:57 | 显示全部楼层
    看看内容的说!!!

    该用户从未签到

    发表于 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模式下了。

    申请友链|Archiver|小黑屋|手机版|GTK+中文社区 ( 粤ICP备13080851号  

    我要啦免费统计

    GMT+8, 2017-12-18 11:18 , Processed in 0.203794 second(s), 12 queries , Redis On.

    Powered by Discuz! F1.0 Build 20160930

    © 2001-2017 Comsenz Inc. & Discuz! Fans

    快速回复 返回顶部 返回列表