试用glade小记

第一次尝试使用gtk的时候,被无穷无尽繁杂的代码整晕了,刚刚才发现原来用glade可以如此方便的生成GUI,完全和代码剥离开,即使要修改界面,也用不着再次编译,的确很方便。

如何使用glade,网上有很多教程,我现在讲一点遇到的困难吧。

在为各种signal添加handler的时候,有两点要注意。

首先handler应该与signal的回调函数的形式完全一致,包括函数名,参数类型,参数个数,返回类型;这个可以在gtk的用户手册里查找(顺便说一句,ubuntu上的小工具devhelp很方便)。

第二点,也是困扰我很久的一点:signal和hanlder绑定的问题。

c代码中绑定signal和handler的方式有两种:

gtk_builder_connect_signals和gtk_builder_connect_signals_full。

前者是自动绑定,这个函数会使用GModule,GLib的一部分,动态加载模块来查询应用程序符号表(函数名,变量名等等),寻找应用程序中能够与Glade中指定的回调函数名相符的函数,然后连接到信号。但是 gtk_builder_connect_signals 只能工作在C下,所以如果你的编译器是g++,仅靠这样是无法binding的。我觉得这又是name mangling的问题(可恶的微软,偏要再搞一套标准,搞出这么多麻烦……),所以为了避开麻烦,可以强制以C的方式调用handler,即在hangler前加上extern "C" 就可以了,在ubuntu下g++试验通过。

后者就是手动绑定singal和hanler,我试用的时候发现不加extern “C” 也行,这两个函数的实现机制到底有何不同,有待高手指教。

posted on 2011-05-10 14:24  闲人草堂 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jtf-china/archive/2011/05/10/2042127.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值