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

 找回密码
 马上加入

QQ登录

只需一步,快速开始

查看: 4245|回复: 3

[请教]初学Gtk编程遇问题

[复制链接]

该用户从未签到

发表于 2010-8-1 19:42:10 | 显示全部楼层 |阅读模式
在学习《GTK+/GNOME程序设计》中,遇到例程labelsample
编译后运行是按按钮时终端内显示
(lablesample:25908): GLib-GObject-CRITICAL **: g_signal_connect_closure_by_id: assertion `signal_id > 0' failed
且Lable不变
我认为该程序是应该能够通过按钮改变label的内容的
请高人指点一二,多谢了

编程环境:FreeBSD 7.2R

源程序如下
#include <gtk/gtk.h>

void CloseTheApp(GtkWidget *window,gpointer data)
{
        gtk_main_quit();
}

void ChangeText(GtkButton *button,gpointer data)
{
        static gboolean textType =TRUE;
       
        if(textType)
                gtk_label_set_text(GTK_LABEL(data),"Some Text");
        else
                gtk_label_set_text(GTK_LABEL(data),"More Text");

        textType=!textType;
}

gint main(gint argc,gchar *argv[])
{
        GtkWidget *window;
        GtkWidget *label;
        GtkWidget *mainbox;
        GtkWidget *button;

        gtk_init(&argc,&argv);
       
        window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size(GTK_WINDOW(window),320,200);
        gtk_window_set_title(GTK_WINDOW(window),"Label Sample");
        gtk_container_set_border_width(GTK_CONTAINER(window),10);
       
        gtk_signal_connect(GTK_OBJECT(window),"destroy",
                                                         GTK_SIGNAL_FUNC(CloseTheApp),NULL);
       
        mainbox=gtk_vbox_new(FALSE,5);
       
        label=gtk_label_new("A Label");
        gtk_box_pack_start(GTK_BOX(mainbox),label,TRUE,TRUE,5);
       
        button=gtk_button_new_with_label("Change Text");
        gtk_box_pack_end(GTK_BOX(mainbox),button,TRUE,TRUE,5);
       
        gtk_signal_connect(GTK_OBJECT(button),"Clicked",
                                                         GTK_SIGNAL_FUNC(ChangeText),label);
       
        gtk_container_add(GTK_CONTAINER(window),mainbox);
       
        gtk_widget_show_all(window);
       
        gtk_main();
       
        return 0;
}

该用户从未签到

 楼主| 发表于 2010-8-1 19:42:10 | 显示全部楼层

[请教]初学Gtk编程遇问题

呃,自行解决了
原来在
gtk_signal_connect(GTK_OBJECT(button),"Clicked",
GTK_SIGNAL_FUNC(ChangeText),label);
里把"clicked"写成了"Clicked"………………
  • TA的每日心情
    奋斗
    2021-11-19 13:15
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2010-8-1 19:42:10 | 显示全部楼层

    [请教]初学Gtk编程遇问题

    呵呵,恭喜哈~

    该用户从未签到

    发表于 2012-5-31 13:11:28 | 显示全部楼层
    学习了。。。。。
    *滑块验证:
    您需要登录后才可以回帖 登录 | 马上加入

    本版积分规则

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

    我要啦免费统计

    GMT+8, 2024-12-22 01:57 , Processed in 0.048466 second(s), 7 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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