事件盒构件(GtkEventBox)在屏幕上什么也不画,也不能单独对事件做出响应。它的功能是为一些没有X窗口的构件(如label)提供X窗口。使其可以接收信号。它另外一个作用是剪裁这些构件。它的功能有点像Dreamweaver里的焦点。
使一个没有X窗体的构件响应信号分为3步。
一、创建事件盒构件。我们用gtk_event_box_new来创建事件盒构件。
1.
名称::
gtk_event_box_new
功能:
创建事件盒构件
头文件:
#include <gtk/gtk.h>
函数原形:
GtkWidget *gtk_event_box_new( void );
参数:
无
返回值:
新的事件盒构件
2.
名称::
gtk_container_set_border_width
功能:
设置容器边框的宽度
头文件:
#include <gtk/gtk.h>
函数原形:
void gtk_container_set_border_width( GtkContainer *container
guint border_width);
参数:
GtkContainer *container 容器指针
guint border_width 边框宽度(0-65535像素)
返回值:
无
二、将要响应事件的构件加入事件盒构件。
gtk_container_add( GTK_CONTAINER(event_box), child_widget );
三、为事件盒构件绑定一个事件响应。
gtk_signal_connect (GTK_OBJECT(event_box), "button_press_event", GTK_SIGNAL_FUNC (gtk_main_quit), NULL);
下面就是应用事件盒构件的例子。
#include <gtk/gtk.h>
int main(int argc,char *argv[ ])
{
GtkWidget *window;
GtkWidget *event_box;
GtkWidget *label;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window),”destroy”,GTK_SIGNAL_FUNC(gtk_main_quit),NULL);
gtk_container_set_border_width(GTK_CONTAINER(window),10);
event_box=gtk_event_box_new();/*创建事件盒构件*/
gtk_container_add(GTK_CONTAINER(window),event_box);
gtk_widget_show(event_box);
label_gtk_label_new(“Click here to quit”);
gtk_container_add(GTK_CONTAINER(event_box),label);/*将label构件加入事件盒构件*/
gtk_widget_show(label);
gtk_signal_connect(GTK_OBJECT(event_box),”button_press_event”,GTK_SIGNAL_FUNC(gtk_main_quit),NULL);/* 为事件盒构件绑定一个事件响应*/
gtk_widget_show(window);
gtk_main();
}
程序运行后得到如下窗体,当用户点击label程序退出。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。