当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2007-11-25 0:26 

注册: 2006-11-22 19:31
帖子: 32
送出感谢: 0 次
接收感谢: 0 次
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。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-11-25 0:35 
头像

注册: 2007-05-25 16:47
帖子: 881
地址: 上海
送出感谢: 0 次
接收感谢: 0 次
支持


页首
 用户资料  
 
3 楼 
 文章标题 : Re: Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2007-12-16 19:57 

注册: 2007-07-19 7:38
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
llqbll 写道:
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;
}
然后直接写回调函数即可,不需要添加任何映射


附件:
anjuta_glade.png
anjuta_glade.png [ 37.87 KiB | 被浏览 3444 次 ]

页首
 用户资料  
 
4 楼 
 文章标题 : Re: Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2007-12-16 21:12 
头像

注册: 2007-07-12 16:30
帖子: 303
地址: 桂林
送出感谢: 0 次
接收感谢: 2
HotKing 写道:
另一种方法:使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;
}
然后直接写回调函数即可,不需要添加任何映射


原来是GTK的,要是GTKmm也能“signal_autoconnect”就好了!


最后由 tipfoo 编辑于 2007-12-17 9:21,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-12-16 21:19 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
g_signal_connect标准的写法。glade_xml_signal_autoconnect。还真没见过。呵呵。


_________________
● 鸣学


页首
 用户资料  
 
6 楼 
 文章标题 : Re: Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2008-10-17 21:00 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
eexpress,
我还想问问,有两个窗口,一个是连接窗口,一个是对话窗口(类似qq聊天的对话窗口)
当连接成功要打开对话窗口,打开对话窗口的同时要启动一个接收数据的函数,随时等待并接收另一端发送过来的数据,想问接收数据的函数应该与哪个窗口 的哪个信号link哪?
如下图:


附件:
Screenshot-1.png
Screenshot-1.png [ 45.6 KiB | 被浏览 20 次 ]

Screenshot.png
Screenshot.png [ 56.2 KiB | 被浏览 19 次 ]


页首
 用户资料  
 
7 楼 
 文章标题 : Re: Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2008-10-23 0:52 
头像

注册: 2006-06-06 22:56
帖子: 80
送出感谢: 0 次
接收感谢: 0 次
llqbll 写道:
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。


试一下builder对象
gtk_builder_connect_signals(...);


页首
 用户资料  
 
8 楼 
 文章标题 : Re: Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2008-10-30 10:25 

注册: 2008-10-29 12:21
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
我想请教gtk如何自定义控件阿,哪位大虾指点指点!


_________________
Linux c/c++ gtk+


页首
 用户资料  
 
9 楼 
 文章标题 : Re: Glade 3 + Anjuta 的使用(控件与函数的连接)
帖子发表于 : 2009-04-13 15:37 

注册: 2008-01-05 15:12
帖子: 59
送出感谢: 0 次
接收感谢: 0 次
HotKing 写道:
另一种方法:使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;
}
然后直接写回调函数即可,不需要添加任何映射


原来这么写就行了 !不过要是很多响应的话,在一个源文件里岂不是会有N多的g_signal_connect,看起来会很乱吧.
请问你有没有一些例子呢?发给我一些,我好学习学习~~谢了~~ :em01
sea.mail@qq.com


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译