GTK:回调函数签名概述

时间:2018-02-02 16:58:58

标签: c gtk gtk2

在GTK2应用程序中,可以在发生某些事件时调用用户定义的回调函数,例如:

static void on_destroy(GtkObject* o) {
    gtk_main_quit();
}

int main(int argc, char * argv[]) {
    ...    
    g_signal_connect(window1, "destroy", G_CALLBACK(on_destroy), NULL);
    ...
}

回调函数的签名取决于信号或事件的类型。我正在寻找这些签名的简明概述,我在chapter about signals中找到了GTK+ 2.0 tutorial。但是,它似乎缺少GtkTreeview信号的回调签名,如row-activatedselect-cursor-row等。

是否有任何其他来源描述所有回调签名的正确实现,最好是简要概述而不是分布在几个章节中?

2 个答案:

答案 0 :(得分:1)

您应该查看Gtk+ 2 Reference Manual

例如,在您的示例中连接的destroy信号来自GtkWindow父类之一,GtkObject

  

“破坏”信号

     

void user_function (GtkObject *object, gpointer user_data)

检查树,列出小部件以获取相关信号和相应的原型:

https://developer.gnome.org/gtk2/stable/TreeWidgetObjects.html

注意:父类并不意味着多继承,只是继承层次结构中的一个类。

答案 1 :(得分:0)

您需要了解如何使用官方帮助。在每个小部件帮助页面上,顶部有一个导航栏。在那里,您可以直接链接信号,对象层次结构(父类)等。

因此,如果您正在寻找小部件的特定信号,您只需转到该小部件帮助页面,然后点击"信号"导航栏中的链接。如果信号不存在,那么它必须在父类中。所以你点击"对象层次结构"链接,它将您发送到窗口小部件的继承树。您单击其父项并再次搜索该信号。

或者,您可以安装随Linux发行版一起安装的devhelp帮助浏览器(或在MSYS2 for Windows中)。您可以在搜索字段中输入您要查找的符号名称,包括信号。