26.2.5 添加事件和回调
Glade主界面的“信号”选项卡中可为界面构件连接事件、信号和回调函数。所选构件可用的事件将以该构件对应的类的继承关系显示信号,如图26.38所示。
上图是文本输入框所对应的信号。最底层为GObject类定义的信号,最顶层则是文本输入框所属的GtkEntry类定义的信号。单击类名称左侧的展开器,将显示出该类定义的所有信号,如图26.39所示。
%注意:GtkWidget类中定义与GDK底层事件相关的信号必须选择“公共”选项卡中的“事件”列表框才能生效。
图26.38 信号的分类 图26.39 展开分类中的信号
选择信号名称后,可为该信号连接回调函数和数据,对应g_signal_connect()函数的功能。回调函数可单击对应单元格中的下拉列表选择,如图26.40所示。
图26.40 选择回调函数
回调函数列表中的前2条函数是Glade根据构件名称命名的,其余为可用的GTK+函数。如果需要自定义回调函数名称,可在单元格内直接输入。
回调函数后可设置传递给回调函数的用户数据,该数据通常是回调函数中最后一个实际参数的名称,可以为变量名或常量,如图26.41所示。
图26.41 设置回调函数数据
图26.41中,为一个按钮构件的clicked信号连接了gtk_widget_show()函数,用户数据设置为window2。在实际程序中,按下该按钮即能显示项目中名为window2的构件。
如果回调函数并非GTK+中提供的函数,那么回调函数的实现必须在具体C语言代码中进行,两者使用的名称必须一致。
信号列表中有一项After单选框,选择后将使用g_signal_connect_after()函数连接信号与回调函数。当为信号设置回调函数后,信号名的左侧会多出一个展开器。如果需要为同一个信号连接更多的回调函数,可单击该展开器添加更多回调函数,如图26.42所示。
图26.42 添加更多回调函数