找回密码
 注册
查看: 1151|回复: 8

求助-----GTK中怎么向呼回函数传递两个或两个以上的对象

[复制链接]
发表于 2006-7-27 18:46:02 | 显示全部楼层 |阅读模式
GTK中怎么传递两个或两个以上的对象呢?

g_signal_connect()只能传递一个参数,看了好多例子程序,没有找到解决的办法。
怎么向一个呼回函数中传递两个以上的对象呢?

举个例子:有两个 entry1, entry2
                  一个 button
当我click button 时,希望从entry1读取text, 然后从entry2输出,怎么实现?能给个简单的代码吗??谢谢了。
发表于 2006-7-27 19:16:21 | 显示全部楼层
struct
回复

使用道具 举报

 楼主| 发表于 2006-7-27 19:17:21 | 显示全部楼层
能不能说的详细点?我不知道你说的“struct”是什么意思啊??
typedef struct
{
   GtkEnry entry1;
   GtkEntry entry2;
}Object

Object *object;

g_signal_connect(button,"clicked",G_CALLBACK (button_was_clicked),GTK_OBJECT(object));

然后声明
void button_was_clicked(Object *object)
{
   object->entry1;
   object->entry2;
    (这样用)
}
是这样吗???
可是Object就不是一个GTK_BOJECT对象

(这些纯粹是我吓猜的)
回复

使用道具 举报

发表于 2006-7-27 19:45:16 | 显示全部楼层
定义一个结构不就行了吗?

gulong g_signal_connect( gpointer      *object,
                         const gchar   *name,
                         GCallback     func,
                         gpointer      func_data );

第四个参数是 gpointer 类型的。
回复

使用道具 举报

发表于 2006-7-27 23:18:44 | 显示全部楼层
void button_was_clicked(gpointer data)
{
Object *obj = (Object *)data;
obj -> entry1;
obj -> entry2;
}
回复

使用道具 举报

 楼主| 发表于 2006-7-28 17:44:22 | 显示全部楼层
//用楼上的方法遇见问题了

(1)
src/interface.c - 生成窗口、对话框及其它控件的代码。
(2)
Glade会覆盖的文件有:
interface.h
interface.c
support.h
support.c

这些文件最顶部会有'DO NOT EDIT'(不要编辑)的信息。

只能添加在interface.h中,可是联编一次,自给加的代码就会被覆盖.
那我怎么添加自己的结构体呢?

(我用的是Glade Interface Designer GTK+2.0 GUI builder 设计的界面)

(3)
我看到还有一种获取的方法
lookup_widget()
这两个有什么区别吗?
===========================
(4)
2006-07-27 21:44
libglade是什么
回复

使用道具 举报

发表于 2006-7-29 11:30:14 | 显示全部楼层
http://www.gnome-cn.org/documents/tutorial/glade-advance-tutorial
回复

使用道具 举报

发表于 2006-7-29 11:30:53 | 显示全部楼层
http://www.gnome-cn.org/documents/developer_doc/API/libglade/index.html
回复

使用道具 举报

发表于 2006-7-29 11:41:35 | 显示全部楼层
用 glade 的话,界面和实际功能的代码要分开。也就是说你别放在 glade 会改的文件里就行了。

在 glade 的介绍里面有:
The user interfaces designed in Glade are stored in the well-known XML
format, enabling easy integration with external tools. Several tools are
already available which can turn the XML files into source code in other
languages such as C++, Perl and Python. Other tools such as libglade can
load the XML files and create the interfaces at runtime.
小程序可以把画好的界面转成 C 代码。大程序的话最好不转,而是调用 libglade。

我不知道 lookup_widget() 是什么东西。我连 GTK+ 2.0 Tutorial 都没看完呢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-2-6 19:29 , Processed in 0.025094 second(s), 15 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表