Glade 3 + Anjuta 的使用(控件与函数的连接)

原文地址:http://forum.ubuntu.org.cn/viewtopic.php?t=91300


Glade 3 是一个完全重写过的版本,最大的特点就是去掉了代码生成的功能。这也完全符合 Glade 的初衷:界面与代码的分离。

但在Anjuta下,怎么也没办法用g_signal_connect()把Glade 3生成的控件与时间连接起来,在网上也没搜索到什么有用的资料,对比Glade2的生成文件,发现Anjuta使用了 glade_xml_new,glade_xml_get_widget,与Glade2的生成文件不同,而是直接调用了XML形式的glade。
看来只有修改Anjuta的默认生成函数GtkWidget*create_window (void)了,
GtkWidget*
create_window (void)
{
GtkWidget *window;
GladeXML *gxml;
GtkWidget *button;
gxml = glade_xml_new (GLADE_FILE, NULL, NULL);

/* This is important */
glade_xml_signal_autoconnect (gxml);
window = glade_xml_get_widget (gxml, "window");
button = glade_xml_get_widget (gxml, "button1");
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(gtk_main_quit),NULL);
return window;
}

下划线部分为自己要添加的对控件的连接,button1为在Glade 3中自己创建的按钮,也可以直接删除函数create_window,自己在main函数中调用XML。

另一种方法:使glade_xml_signal_autoconnect ()函数生效,自动调用消息处理的回调函数
设置Anjuta:
Project-->Properties-->Packages-->Add Package-->添加gmodule-2.0或gmodule-export-2.0中的任意一个即可
GtkWidget*
create_window (void)
{
GtkWidget *window;
GladeXML *gxml;
gxml = glade_xml_new (GLADE_FILE, NULL, NULL);

/* This is important */
glade_xml_signal_autoconnect (gxml);//此时该函数生效
window = glade_xml_get_widget (gxml, "window");
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
return window;
}
然后直接写回调函数即可,不需要添加任何映射


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值