当前位置:  技术问答>linux和unix

求教gtk_widget_can_activate_accel()函数的作用。

    来源: 互联网  发布时间:2016-05-24

    本文导语:  关于该函数的作用,在GTK+手册中描述如下: Determines whether an accelerator that activates the signal identified by signal_id can currently be activated. This is done by emitting the "can-activate-accel" signal on widget; if the signal isn'...

关于该函数的作用,在GTK+手册中描述如下:
Determines whether an accelerator that activates the signal identified by signal_id can currently be activated. This is done by emitting the "can-activate-accel" signal on widget; if the signal isn't overridden by a handler or in a derived widget, then the default check is that the widget must be sensitive, and the widget and all its ancestors mapped.

我的理解是,如果在程序中为某个构件设置了一个快捷键。将构件和信号标识符作为参数传递给gtk_widget_can_activate_accel()函数,那么使用快捷键时can-activate-accel信号被抛出。(这一点我在程序中已证实)

那么关于activate-accel信号的描述如下:
Determines whether an accelerator that activates the signal identified by signal_id can currently be activated. This signal is present to allow applications and derived widgets to override the default GtkWidget handling for determining whether an accelerator can be activated.
而我下载的一本《Foundations of GTK+ Development》(Apress)上的描述为:
You can use this signal to override the default handler for whether an accelerator can be activated. You should return TRUE if the signal can be activated.

我认为,activate-accel信号的回调函数如果返回TRUE,快捷键才会执行。但是我实际的程序中,为什么怎么搞都没有用?





代码如下:

gboolean activate_accel(GtkWidget *button, gint signal_id)
{
printf("%dn", signal_id); // 这条能把信号标识符输出
return FALSE; // 我想让快捷键失效
}
………………// 省略其它回调函数
main(){
………………
button = gtk_button_new_with_label("计数  CTRL + A");
gtk_widget_add_accelerator (button, "clicked", accel_group,
                              GDK_A, (GdkModifierType) GDK_CONTROL_MASK,
                              GTK_ACCEL_VISIBLE); // 注册了一个快捷键
………………
signal_id = g_signal_connect((gpointer) button, "clicked", G_CALLBACK(label_const),
(gpointer) label);
gtk_widget_can_activate_accel(button, signal_id); // 注意!!!这里是关键!!!
g_signal_connect((gpointer) button, "can-activate-accel",
G_CALLBACK(activate_accel), NULL); // 这个地方处理can-activate-accel函数!!!

………………
}

|
帮顶吧。没玩过GTK。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • 高分求教的问题(关于SendMail设置)
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3