GTK+3系列教程4:添加事件处理

每天进步一点点,用实际行动实现你伟大的梦想。

老规矩,先上代码。

代码
运行截图

这节就讲一个函数就ok了,这个牛逼的函数就是g_signal_connect();  此函数将控件和事件处理函数联系起来。上面代码中g_signal_connect(button1, "clicked", G_CALLBACK (button1_handler), NULL); 就是将button1这个控件和button1_handler这个事件处理函数联系起来。这个函数的API参考如下:

g_signal_connect()参考用法

  第一个参数是控件实例,这里是button1,第二个参数是信号实例clicked,第三个参数是事件处理函数GCallback,这里是button1_handler,最后一个参数是额外数据NULL。

其中需要注意的是第三个参数这里写的是G_CALLBACK (button1_handler)因为button1_handler本质上只是一个函数而不是GCallback,我们先搞清楚GCallback是什么,参考官方文档如下:

GCallback官方参考

  注意看最后一句话,使用G_CALLBACK()将回调函数转换为GCallback。我们继续看G_CALLBACK()

G_CALLBACK()官方参考

  原来G_CALLBACK()是用于将函数转换成GCallback的宏定义。

  g_print("Hello World\n");  是将参数输出到stdout(标准输出),需要自行添加\n来实现分行,也不适合用于(debug)调试。参考文档如下。

g_print()官方参考

  下面再来深入分析下g_signal_connect()和事件处理函数之间的关系,上图。

关系图

  图中箭头双方都是相互关联的。现在就很清楚了吧。

  下节教程将介绍各种布局的使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容