GTK 信号的 创建 发射 链接
来源:互联网 发布:网络诈骗套路 编辑:程序博客网 时间:2024/05/01 00:00
这里自定义的信号是当按下回车键后,自动输出一行信息,说明输入已经结束。需要说明的是信号的定义不是在实例结构和类结构的定义(ouritem.h)中定义,而是在实例结构和类结构的实现(ouritem.c)中定义和实现的。
首先为信号定义标记,它是以枚举类型来实现的(见代码),为我们定义的信号命名为OURITEM_OK_SIGNAL,也是第一个信号名;最后一个信号名为LAST_SIGNAL,这样按照C语言中枚举类型进行定义,如果定义多个信号的话,可以自行添加。
然后,再定义一个整型数组ouritem_signals,其长度为LAST_SIGNAL,来保存信号创建后返回的值,这个值很关键,当发射信号的时候用到,如果多个信号的话,每个数组元素对应一个信号,而LAST_SIGNAL是没有具体做用的,只用来标识数组的长度。
用函数g_signal_new来创建一个新的信号,它的第一个参数是信号名,它是以字母开始,其后可以是字母、数字、下划线或减号,这里命名为"ouritem_ok";第二个参数是此对象的类型,用宏G_TYPE_FROM_CLASS来取得;第三个参数是信号运行时的标记,我们取值为G_SIGNAL_RUN_FIRST,还有许多其它值可取(详见GOBJECT的API参考);第四个参数是函数指针在此对象的类结构中的偏移,一般用于调用对象的方法,这里我们调用函数指针enter_ok;第五个参数和第六个参数分别是此信号的类聚(accumulator)和类聚的数据,可以为空;第七个参数是用一标明此信号回调函数的返回类型和参数类型的closure_marshal, 我们取值为g_cclosure_marshal_VOID__VOID;第八个参数是信号的返回值的类型,如果没有返回值,则为G_TYPE_NONE;第九个参数标识我们自己加的参数的个数,我们不加自定义参数,所以设为0,如果有自定义参数可以加在这里,最后一个参数必需是NULL。
信号的创建一般在类初始化(our_item_class_init)中进行
这里我们用函数g_signal_emit来发射信号,它也有多个参数,它的第一个参数是对象的实例,用G_OBJECT来转换;第二个参数是信号的标记,即我们上面定义的ouritem_signals数组中的一个值,这里取ouritem_signals[OURITEM_OK_SIGNAL];第三个参数是详细内容,可以设为0不做处理。还可以用g_signal_emitv函数来发射信号,它的用法参考GOBJECT的API手册。
当我们在控件的类结构中定义并实现了信号的发射后,我们就可以在应用此控件时为控件的信号连接回调函数,即用g_signal_connect宏就可以实现最常用的连接。
- GTK 信号的 创建 发射 链接
- 信号的发射和传播@GTK+ 2.0 中文教程连载
- qt QComboBox dataChanged()信号的发射
- PyQt5:发射信号(18)
- 利用单片机自制简单的RS232信号发射装置
- 无线广播相关信号(收音机)的发射与接收
- gtk默认信号id的列表
- gtk默认信号id的列表
- Qt实现截图选择框(仅实现选择框创建,非完整的截图功能)并发射信号给调用的槽函数
- Qt信号与槽补充 - 在基类函数中发射的信号
- Qt信号和槽的连接--发射信号而槽未响应
- 红外发射与调制信号
- 信号发射过程&参数处理
- GTK中的信号机制
- GTK GDK 事件 信号
- GTK+ 响应下拉列表框的changed信号
- 关于GTK编程中的关闭窗口的信号
- GTK+编程入门(3)—响应GKT+的信号
- C#读取被进程占用的文件
- jQuery validate 根据 asp.net MVC的验证提取简单快捷的验证方式(jquery.validate.unobtrusive.js)
- svchost.exe是什么进程
- VirtualBox安装增强功能的终极办法,安全,成功率目前100%
- 电信光猫
- GTK 信号的 创建 发射 链接
- ios中NSPredicate的用法
- bit 与byte(转)(
- CF——289D(推不出来就找规律吧)
- Android Dalvik 内存管理学习
- 基于GeoServer切片地图服务的发布
- hdu 1285 确定比赛名次 (简单的拓扑排序)
- linux手动编译java工程(含package和lib)
- 高并发操作和查询的数据采集和查询系统的oracle数据库设计建议