免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2536 | 回复: 1

高手请看GTK! [复制链接]

论坛徽章:
0
发表于 2004-10-11 10:47 |显示全部楼层

      创建了一个窗口,用set_title设置了标题为:“HELLO!”,然后添加了一个按钮,请问当点击按钮后,如何改变此窗体的title?(比如title改为“HI!”)
>;
>; 我水平不高,没能实现,请看我的代码,麻烦高手帮我修改一下!

#include <gtk/gtk.h>;

GtkWidget *window;

void set_title ( GtkWidget *widget, GdkEvent *event, gpointer data )
{

/* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);*/

gtk_window_set_title (GTK_WINDOW (window), "HI!";

/* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);*/

gtk_widget_show (window);
}

gint delete_event (GtkWidget *widget, GdkEvent *event, gpointer data)
{
return FALSE;

}

void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit ();
}


int main( int argc, char *argv[] )
{
/* GtkWidget *window;*/
GtkWidget *button;
GtkWidget *box1;

gtk_init(&argc, &argv);

/*建立窗体*/
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello!";
g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL);
g_signal_connect (G_OBJECT (window), "destroy",G_CALLBACK (destroy), NULL);
gtk_widget_set_size_request (window, 300, 100);

/*建立组装盒*/
box1 = gtk_vbox_new (TRUE, 0);
gtk_container_add (GTK_CONTAINER (window), box1);

/*建立“Input”按纽*/
button = gtk_button_new_with_label ("Input";
/* g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (callback), "Input";*/
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);

/*建立“ChangeTitle”按钮*/
button = gtk_button_new_with_label ("ChangeTitle";
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (gtk_window_set_title), "ChangeTitle";
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);
/*建立“Quit”按钮*/
button = gtk_button_new_with_label ("Quit";
g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy), window);
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);

gtk_widget_show (box1);
gtk_widget_show (window);
gtk_main();
return 0;

}

请教:
代码虽然编译通过,但是“ChangTitle”的功能没实现,并且每点击一次“ChangeTitle”,终端就输出一条信息 ,如下:

GTK-CRITICAL**:file gtkwindow.c: line 953 (gtk_window_set_title) : assertion `GTK_IS_WINDOW (window)` failed

论坛徽章:
0
发表于 2004-10-31 22:16 |显示全部楼层

高手请看GTK!

#include <gtk/gtk.h>;

GtkWidget *window;

void set_title ( GtkWidget *widget, GdkEvent *event, gpointer data )
{

/* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);*/

gtk_window_set_title (GTK_WINDOW (window), "HI!";

/* window = gtk_window_new (GTK_WINDOW_TOPLEVEL);*/

gtk_widget_show (window);
}

gint delete_event (GtkWidget *widget, GdkEvent *event, gpointer data)
{
return FALSE;

}

void destroy(GtkWidget *widget, gpointer data)
{
gtk_main_quit ();
}


int main( int argc, char *argv[] )
{
/* GtkWidget *window;*/
GtkWidget *button;
GtkWidget *box1;

gtk_init(&argc, &argv);

/*建立窗体*/
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello!";
g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL);
g_signal_connect (G_OBJECT (window), "destroy",G_CALLBACK (destroy), NULL);
gtk_widget_set_size_request (window, 300, 100);

/*建立组装盒*/
box1 = gtk_vbox_new (TRUE, 0);
gtk_container_add (GTK_CONTAINER (window), box1);

/*建立“Input”按纽*/
button = gtk_button_new_with_label ("Input";
/* g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (callback), "Input";*/
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);

/*建立“ChangeTitle”按钮*/
button = gtk_button_new_with_label ("ChangeTitle";
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (set_title), "ChangeTitle";
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);
/*建立“Quit”按钮*/
button = gtk_button_new_with_label ("Quit";
g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy), window);
gtk_box_pack_start (GTK_BOX(box1), button, TRUE, TRUE, 0);
gtk_widget_show (button);

gtk_widget_show (box1);
gtk_widget_show (window);
gtk_main();
return 0;

}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP