首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出GTK+信号需要哪些GDK事件?

如何找出GTK+信号需要哪些GDK事件?
EN

Stack Overflow用户
提问于 2009-04-30 18:17:02
回答 3查看 774关注 0票数 2

我正在使用Glade-3进行GUI设计,但我一直遇到这个问题。在GTK+文档或Glade-3 (3.4.5)中,我没有看到任何将信号映射到事件的内容。在GTK+源代码中有没有地方可以找到这些信息?

注意:在这个问题中,重要的是要认识到事件和信号在GTK中不是一回事。

示例:

我有一个事件框,它需要以下事件才能接收以下信号。如何确定给定信号需要哪些事件?

代码语言:javascript
复制
Events: GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_STRUCTURE_MASK
Signals: leave_notify_event, enter_notify_event
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-07 03:44:03

好了,我想我现在明白你的意思了,我找到了匹配gtk信号和gdk事件的表格。Here it is

票数 3
EN

Stack Overflow用户

发布于 2009-05-30 04:32:01

假设我正确地解释了您的问题,您希望将在Glade文件中指定的信号连接到源代码中的函数。您如何做到这一点取决于您是否使用libglade加载文件生成或GtkBuilder,这两个是相似的,但我会给出示例C只是为了完整。

使用libglade,你可以这样做:

代码语言:javascript
复制
GladeXml *xml = glade_xml_new(filename, NULL, NULL); // Load the file
glade_xml_signal_autoconnect(xml); // Connect the signals

使用GtkBuilder会是这样的:

代码语言:javascript
复制
GtkBuilder *xml = gtk_builder_new();
gtk_builder_add_from_file(xml, filename, NULL); // Load the file
gtk_builder_connect_signals(xml, NULL); // Connect the signals

使用GtkBuilder时,signal connect函数中的第二个参数可以替换为指向数据的指针,然后将数据传递给信号处理程序。

展望未来,我建议使用GtkBuilder,因为libglade即将被弃用。

链接

下面是关于上述两个函数的相关文档的链接

  • http://library.gnome.org/devel/libglade/stable/GladeXML.html#glade-xml-signal-autoconnect
  • http://library.gnome.org/devel/gtk/stable/GtkBuilder.html#gtk-builder-connect-signals
票数 2
EN

Stack Overflow用户

发布于 2011-09-07 18:17:25

您可以使用gdk_event_handler_set()捕获事件

首先,在启动时注册您自己的GDK事件处理程序:

代码语言:javascript
复制
gdk_event_handler_set(my_gdk_event_handler, NULL, NULL);

..。然后使用它打印出任何有用的信息,并且不要忘记通过gtk_main_do_event()将事件传递给GTK+,如下所示:

代码语言:javascript
复制
void my_gdk_event_handler(GdkEvent *event, gpointer data)
{
    printf("Received GdkEvent of type %d", event->type);

    gtk_main_do_event(event); // Pass event to GTK+
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/808338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档