每天进步一点点,用实际行动实现你伟大的梦想。
老规矩,先上代码。
这节就讲一个函数就ok了,这个牛逼的函数就是g_signal_connect(); 此函数将控件和事件处理函数联系起来。上面代码中g_signal_connect(button1, "clicked", G_CALLBACK (button1_handler), NULL); 就是将button1这个控件和button1_handler这个事件处理函数联系起来。这个函数的API参考如下:
第一个参数是控件实例,这里是button1,第二个参数是信号实例clicked,第三个参数是事件处理函数GCallback,这里是button1_handler,最后一个参数是额外数据NULL。
其中需要注意的是第三个参数这里写的是G_CALLBACK (button1_handler),因为button1_handler本质上只是一个函数而不是GCallback,我们先搞清楚GCallback是什么,参考官方文档如下:
注意看最后一句话,使用G_CALLBACK()将回调函数转换为GCallback。我们继续看G_CALLBACK()。
原来G_CALLBACK()是用于将函数转换成GCallback的宏定义。
g_print("Hello World\n"); 是将参数输出到stdout(标准输出),需要自行添加\n来实现分行,也不适合用于(debug)调试。参考文档如下。
下面再来深入分析下g_signal_connect()和事件处理函数之间的关系,上图。
图中箭头双方都是相互关联的。现在就很清楚了吧。
下节教程将介绍各种布局的使用。