- 论坛徽章:
- 0
|
创建了一个窗口,用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 |
|