下面演示了如何在窗口中增加一个按钮,示例代码均有注释
#include
static void print_hello (GtkWidget *widget,gpointer data)
{
//这是一个回调函数,这个data表示传给回调函数的参数。
g_print ("你好,世界\n");
}
static gboolean on_delete_event (GtkWidget *widget,GdkEvent *event,gpointer data)
{
//如果返回FALSE在delete_event信号处理中,GTK将发送destroy信号,否则不会,这样窗口就不会关闭。
g_print ("delete event occurred\n");
return TRUE;
}
int main (int argc,char *argv[])
{
GtkWidget *window;
GtkWidget *button;
//初始化gtk应用程序
gtk_init (&argc, &argv);
//创造新的窗口,设置它的标题
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "你好");
//将delete_event信号绑定在on_delte_devent回调函数上,传递的参数为NULL
g_signal_connect (window, "delete-event", G_CALLBACK (on_delete_event), NULL);
//将destroy信号绑定在gtk_main_quit回调函数上,传递的参数为NULL
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
//设置窗口的边框宽度
gtk_container_set_border_width (GTK_CONTAINER (window), 10);
//创建一个新的标签
button = gtk_button_new_with_label ("Hello World");
//处理按钮的clicked信号
g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
//g_signal_connect_swapped将clicked信号连接到window窗口的gtk_widget_destroy事件中。
g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
//将按钮加入到容器中
gtk_container_add (GTK_CONTAINER (window), button);
//显示这个按钮
gtk_widget_show (button);
//显示窗口
gtk_widget_show (window);
//开始GTK的主循环
gtk_main ();
return 0;
}
本博客所有内容是原创,如果转载请注明来源
http://blog.csdn.net/myhaspl/
在XMANGER下用VIM编写好后,编译运行
