📄 gtk_tut-9.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN"><HTML><HEAD><meta http-equiv="pragma" content="no-cache"><TITLE>GTK导引: EventBox视窗物件</TITLE></HEAD><BODY><A HREF="gtk_tut-8.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-8.html"><IMG SRC="prev.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/prev.gif" ALT="Previous"></A><A HREF="gtk_tut-10.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-10.html"><IMG SRC="next.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/next.gif" ALT="Next"></A><A HREF="gtk_tut.html#toc9" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut.html#toc9"><IMG SRC="toc.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/toc.gif" ALT="Contents"></A><HR><H2><A NAME="sec_The_EventBox_Widget"></A><A NAME="s9">9. EventBox视窗物件</A></H2><P>这只在gtk+970916.tar.gz以後的版本才有.<P>有些gtk物件并没有相关联的视窗, 它们是由其parent所画出来的.因此, 他们不能收到事件. 如果它们大小不对, 他们无法收到事件来修正.如果您需要这样的功能, 那麽EventBox就是您想要的.<P>初看之下, EventBox物件看来好像毫无用途.它在萤幕上什麽事也不做, 也不画, 对事件也不反应.不过, 它倒提供一项功能 - 他提供一个X window来服务其子物件.这很重要, 因为GTK物件很多都跟X window不相关联.不用X window省下记忆体并加快其速度, 但也有其缺点.一个物件没有X window无法接收事件, 而且无法裁切其内容.虽然它叫``EventBox''强调其事件处理功能,这个物件也可用来做裁切.<P><P>要产生一个EventBox物件, 使用:<P><BLOCKQUOTE><CODE><PRE>GtkWidget* gtk_event_box_new (void);</PRE></CODE></BLOCKQUOTE><P><P>一个子视窗物件可被加到EventBox之下:<P><BLOCKQUOTE><CODE><PRE>gtk_container_add (GTK_CONTAINER(event_box), widget);</PRE></CODE></BLOCKQUOTE><P><P>以下的简单示范, 使用了一个EventBox -一个标题, 并且设定成滑鼠在标题上点一下程式就会离开.<P><BLOCKQUOTE><CODE><PRE>#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_window_set_title (GTK_WINDOW (window), "Event Box"); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (gtk_exit), NULL); gtk_container_border_width (GTK_CONTAINER (window), 10); /* 产生一个EventBox并加到其上层的视窗 */ 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, quit, quit, quit, quit"); gtk_container_add (GTK_CONTAINER (event_box), label); gtk_widget_show (label); /* 把它裁短 */ gtk_widget_set_usize (label, 110, 20); /* And bind an action to it */ gtk_widget_set_events (event_box, GDK_BUTTON_PRESS_MASK); gtk_signal_connect (GTK_OBJECT(event_box), "button_press_event", GTK_SIGNAL_FUNC (gtk_exit), NULL); /* 还有一件事, 要X window来处理 ... */ gtk_widget_realize (event_box); gdk_window_set_cursor (event_box->window, gdk_cursor_new (GDK_HAND1)); gtk_widget_show (window); gtk_main (); return 0;}</PRE></CODE></BLOCKQUOTE><P><HR><A HREF="gtk_tut-8.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-8.html"><IMG SRC="prev.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/prev.gif" ALT="Previous"></A><A HREF="gtk_tut-10.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-10.html"><IMG SRC="next.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/next.gif" ALT="Next"></A><A HREF="gtk_tut.html#toc9" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut.html#toc9"><IMG SRC="toc.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/toc.gif" ALT="Contents"></A></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -