今天说 g_singal_connect的用法,以及一些窗口的信号。 http://library.gnome.org/devel/gtk/2.90/GtkWidget.html 这里有关于窗口的信号说明 #include <gtk/gtk.h> typedef GtkWidget* Gw;Gw window; gboolean delete_event(GtkWidget *widget,GdkEvent *event,gpointer data) { g_printf("-------------------%s---/n",data); // return TRUE;//返回true时,窗口响应不关闭 return FALSE;//返回 false时,关闭窗口 并产生destroy信号 } gboolean hide(GtkButton *button,gpointer data) { gtk_widget_hide(window); g_printf("-------------------%s-/n",data); return FALSE; } void destory(GtkWidget *widget,gpointer data )//产生destroy 信号时被调用 { sleep(3);//此函数彻底结束后,窗体才释放 g_printf("---------------destory----%s-/n",data); } int main(int argv,char *argc[]) { Gw button1; gtk_init(&argv,&argc); window = gtk_window_new(GTK_WINDOW_TOPLEVEL);//创建窗体 button1 = gtk_button_new_with_label("hidden button ");//创建按钮并为按钮设置文本 g_signal_connect(G_OBJECT(button1),"clicked",G_CALLBACK(hide),"hidden");//为button设置单击信号与槽函数,并传递参数 g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(delete_event),"this delete window ");//为window设置delete_event 信号的槽函数 该信号在 点击窗口的关闭按钮时被触发。同时产生一个destroy信号给 window (destroy 产生信号的方式有两种 gtk_widget_destroy() 函数或在 "delete_event")时被触发 g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(destory),"destroy window ");//为window 的destroy注册信号槽函数 gtk_container_add(GTK_CONTAINER(window),button1);//将button1加入容器window中 gtk_widget_show(button1);//显示 gtk_widget_show(window); gtk_main(); return 0; }