⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtk_tut-5.html

📁 gtk 开发手册和参考文档。 包括gtk glib gdk等
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN"><HTML><HEAD><meta http-equiv="pragma" content="no-cache"><TITLE>GTK导引: 物件概论</TITLE></HEAD><BODY><A HREF="gtk_tut-4.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-4.html"><IMG SRC="prev.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/prev.gif" ALT="Previous"></A><A HREF="gtk_tut-6.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-6.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#toc5" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut.html#toc5"><IMG SRC="toc.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/toc.gif" ALT="Contents"></A><HR><H2><A NAME="s5">5. 物件概论</A></H2><P><P>在GTK下,一般产生物件的步骤为:<OL><LI> gtk_*_new - 最普遍产生物件的函数. </LI><LI>连接信号到信号处理器.</LI><LI> 设定物件属性.</LI><LI> 要将物件包装到一个container可用gtk_container_add()或gtk_box_pack_start().</LI><LI> gtk_widget_show().</LI></OL><P>gtk_widget_show()让GTK知道我们已经完成设定的工作, 并且已经准备好要显示.您也可以用gtk_widget_hide来隐藏它.  显示物件的顺序并不太重要, 但我建议最後才显示,这样才不会看到这些视窗们一个一个被画出来.子物件在使用gtk_widget_show使视窗出现之前是不会被显示出来的.<P><H2><A NAME="ss5.1">5.1 分派系统</A></H2><P>再继续下去您会发现, GTK使用一种分派系统.  一般是用巨集来完成.  您可以看到诸如以下:<P><UL><LI> GTK_WIDGET(widget)</LI><LI> GTK_OBJECT(object)</LI><LI> GTK_SIGNAL_FUNC(function)</LI><LI> GTK_CONTAINER(container)</LI><LI> GTK_WINDOW(window)</LI><LI> GTK_BOX(box)</LI></UL><P>这些在函数中的都是分派参数.您可以在范例中看到, 而且只要看到该函数就会知道它们是做什麽用的.<P>从以下的组织图来看, 所有GtkWidgets都是由GtkObject而来.  这意味著您可以在任何地方, 透过GTK_OBJECT()巨集要求一个物件.<P>例如:<P><BLOCKQUOTE><CODE><PRE>gtk_signal_connect(GTK_OBJECT(button), &quot;clicked&quot;,                   GTK_SIGNAL_FUNC(callback_function), callback_data);</PRE></CODE></BLOCKQUOTE> <P>这样分派一个按钮给一个物件, 并且提供一个指标给callback函数.<P>许多物件同时也是containers.  如果您看看以下的组织图,您会看到许多物件由GtkContainer而来  所有这一类的物件都可以用GTK_CONTAINER巨集产生使用containers.<P><P><H2><A NAME="ss5.2">5.2 物件组织图</A></H2><P>这里是一些参考, 物件组织图.<P><BLOCKQUOTE><CODE><PRE>    GtkObject    +-- GtkData    |   \-- GtkAdjustment    |    \-- GtkWidget        +-- GtkContainer        |   +-- GtkBin        |   |   +-- GtkAlignment        |   |   +-- GtkFrame        |   |   |   *-- GtkAspectFrame        |   |   |        |   |   +-- GtkItem        |   |   |   +-- GtkListItem        |   |   |   +-- GtkMenuItem        |   |   |   |   +-- GtkCheckMenuItem        |   |   |   |       *-- GtkRadioMenuItem        |   |   |   |        |   |   |   *-- GtkTreeItem        |   |   |        |   |   +-- GtkViewport        |   |   \-- GtkWindow        |   |       +-- GtkDialog        |   |       \-- GtkFileSelection        |   |        |   +-- GtkBox        |   |   +-- GtkHBox        |   |   \-- GtkVBox        |   |       +-- GtkColorSelection        |   |       \-- GtkCurve        |   |        |   +-- GtkButton        |   |   +-- GtkOptionMenu        |   |   \-- GtkToggleButton        |   |       \-- GtkCheckButton        |   |           \-- GtkRadioButton        |   |        |   +-- GtkList        |   +-- GtkMenuShell        |   |   +-- GtkMenu        |   |   \-- GtkMenuBar        |   |        |   +-- GtkNotebook        |   +-- GtkScrolledWindow        |   +-- GtkTable        |   \-- GtkTree        |        +-- GtkDrawingArea        +-- GtkEntry        +-- GtkMisc        |   +-- GtkArrow        |   +-- GtkImage        |   +-- GtkLabel        |   \-- GtkPixmap        |        +-- GtkPreview        +-- GtkProgressBar        +-- GtkRange        |   +-- GtkScale        |   |   +-- GtkHScale        |   |   \-- GtkVScale        |   |        |   \-- GtkScrollbar        |       +-- GtkHScrollbar        |       \-- GtkVScrollbar        |        +-- GtkRuler        |   +-- GtkHRuler        |   \-- GtkVRuler        |        \-- GtkSeparator            +-- GtkHSeparator            \-- GtkVSeparator</PRE></CODE></BLOCKQUOTE><P><P><H2><A NAME="ss5.3">5.3 没有视窗的物件</A></H2><P>以下的物件跟视窗没有关系.如果您希望接取它们的事件, 您需要使用GtkEventBox.请见<A HREF="gtk_tut-9.html#sec_The_EventBox_Widget" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-9.html#sec_The_EventBox_Widget">EventBox物件</A><P><BLOCKQUOTE><CODE><PRE>GtkAlignmentGtkArrowGtkBinGtkBoxGtkImageGtkItemGtkLabelGtkPanedGtkPixmapGtkScrolledWindowGtkSeparatorGtkTableGtkViewportGtkAspectFrameGtkFrameGtkVPanedGtkHPanedGtkVBoxGtkHBoxGtkVSeparatorGtkHSeparator</PRE></CODE></BLOCKQUOTE><P>再过来我们会一个一个物件来示范如何产生及显示.一个很好的范例是testgtk.c, 您可以在gtk/testgtk.c里面找到.<P><HR><A HREF="gtk_tut-4.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-4.html"><IMG SRC="prev.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/prev.gif" ALT="Previous"></A><A HREF="gtk_tut-6.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-6.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#toc5" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut.html#toc5"><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 + -