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。
HotKing 于 2007-12-16 20:06:48发表:
使glade_xml_signal_autoconnect ()函数生效,自动调用消息处理的回调函数
Project-->Properties-->Packages-->Add Package-->添加gmodule-2.0或gmodule-export-2.0中的任意一个即可
那三行就不用添了,直接可以编写回调函数了