日期:2014-05-16  浏览次数:20588 次

GTK+问题:delete_event到底是信号还是事件?
GTK中有事件也有信号,它们的回调函数不一样。可是delete_event到底是事件还是信号呢?

搜了好久,都没有明确的说delete_event是信号还是事件,貌似大家都默认把它当信号。可它的回调函数却又是和信号的回调函数格式不一样。看一篇总结中,事件和信号大全中居然都有delete_event。

谁来说说真相?
------解决方案--------------------
我一直理解的是,事件的发生,emit了一个对应的信号,而在上层绑定了一个回调函数给这个信号。
------解决方案--------------------
楼主说的delete_event的事件回调函数和信号回调函数不同是指下面的吧

事件回调函数:
gint callback_func( GtkWidget *widget,
                    GdkEvent  *event,
                    gpointer   callback_data );


信号回调函数,一般为下面的形式:
void callback_func( GtkWidget *widget,
                    gpointer   callback_data );


GTK通过GDK来处理事件,GDK将收到的XEvent转换为GdkEvent,然后传给GtkWidget,引发一个与事件相对应的Signal。

事件类型与对应的Signal,基本上就是去掉GDK_,转换为小写并加上_event,如:GDK_DELETE  -->  delete_event

我之前说delete_event一样,是指名字。不知道我解释的清楚不清楚