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

📄 gtk_tut-8.html

📁 gtk 开发手册和参考文档。 包括gtk glib gdk等
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Draft//EN"><HTML><HEAD><meta http-equiv="pragma" content="no-cache"><TITLE>GTK导引: Container物件</TITLE></HEAD><BODY><A HREF="gtk_tut-7.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-7.html"><IMG SRC="prev.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/prev.gif" ALT="Previous"></A><A HREF="gtk_tut-9.html" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut-9.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#toc8" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/gtk_tut.html#toc8"><IMG SRC="toc.gif" tppabs="http://extend.hk.hi.cn/%7ehusuyu/http/beginner/gtk/toc.gif" ALT="Contents"></A><HR><H2><A NAME="s8">8. Container物件</A></H2><H2><A NAME="ss8.1">8.1 笔记本物件</A></H2><P>笔记本物件好几个"页"的集合, 它们互相交叠在一起,并可包含不同的讯息.这个物件在GUI越来越普及, 它是个在显示有类同功能的资讯时很有用的物件.<P>第一个您会用到的是产生一个新的笔记本物件.<P><BLOCKQUOTE><CODE><PRE>GtkWidget* gtk_notebook_new (void);</PRE></CODE></BLOCKQUOTE><P>一旦物件产生後,共有12个函数可以操作该笔记本物件.我们一个一个来看.<P>第一个是要如何来安排"页标签".这些"页标签"或"tabs", 可以用四个位置, 上, 下, 左, 右.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_set_tab_pos (GtkNotebook *notebook, GtkPositionType pos);</PRE></CODE></BLOCKQUOTE><P>GtkPostionType可以是以下四个, 很好认.<UL><LI> GTK_POS_LEFT</LI><LI> GTK_POS_RIGHT</LI><LI> GTK_POS_TOP</LI><LI> GTK_POS_BOTTOM</LI></UL><P>GTK_POS_TOP是内定值.<P>接下来我们来看如何加"一页"到笔记本上.共有三种方法来加页到笔记本上.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_append_page (GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label);void gtk_notebook_prepend_page (GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label);</PRE></CODE></BLOCKQUOTE><P>这些函数新增一页到笔记本, append由後新增,prepend由前新增.*child是要插入笔记本的物件, *tab_label是页标签.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_insert_page (GtkNotebook *notebook, GtkWidget *child, GtkWidget *tab_label, gint position);</PRE></CODE></BLOCKQUOTE><P>参数与_append_及_prepend_相同, 除了多出一个参数, 位置.该参数用来指定要插在那里.<P>现在我们知道要如何新增一页, 再来看看如何移除.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_remove_page (GtkNotebook *notebook, gint page_num);</PRE></CODE></BLOCKQUOTE><P>这个函数移除掉所指定的那一页.<P>要找出目前正在那一页, 可用以下函数:<P><BLOCKQUOTE><CODE><PRE>gint gtk_notebook_current_page (GtkNotebook *notebook);</PRE></CODE></BLOCKQUOTE><P>以下两个函数是向前或向後移动.若目前在最後一页, 而您用gtk_notebook_next_page, 那麽笔记本会绕回第一页,反之亦然.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_next_page (GtkNoteBook *notebook);void gtk_notebook_prev_page (GtkNoteBook *notebook);</PRE></CODE></BLOCKQUOTE><P>以下函数设定"有效页".如果您希望笔记本开启到例如第五页, 您可以用这个函数.内定页为第一页.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_set_page (GtkNotebook *notebook, gint page_num);</PRE></CODE></BLOCKQUOTE><P>以下两个函数可新增及移除页标签及边框.<P><BLOCKQUOTE><CODE><PRE>void gtk_notebook_set_show_tabs (GtkNotebook *notebook, gint show_tabs);void gtk_notebook_set_show_border (GtkNotebook *notebook, gint show_border);</PRE></CODE></BLOCKQUOTE><P>show_tabs及show_border可以是TRUE或FALSE(0或1).<P>现在我们来看个范例, 它是从testgtk.c中展开的,用了所有13个函数.该程式产生一个笔记本及六个按钮,包含11页, 以三种方式加页, appended, inserted,及prepended.这些按钮允许您旋转页标签位置, 新增/移除页标签及边框,移除一页, 以前向及後向改变页的位置, 及离开程式.<P><BLOCKQUOTE><CODE><PRE>#include &lt;gtk/gtk.h&gt;/* This function rotates the position of the tabs */void rotate_book (GtkButton *button, GtkNotebook *notebook){    gtk_notebook_set_tab_pos (notebook, (notebook-&gt;tab_pos +1) %4);}/* Add/Remove the page tabs and the borders */void tabsborder_book (GtkButton *button, GtkNotebook *notebook){    gint tval = FALSE;    gint bval = FALSE;    if (notebook-&gt;show_tabs == 0)            tval = TRUE;     if (notebook-&gt;show_border == 0)            bval = TRUE;        gtk_notebook_set_show_tabs (notebook, tval);    gtk_notebook_set_show_border (notebook, bval);}/* Remove a page from the notebook */void remove_book (GtkButton *button, GtkNotebook *notebook){    gint page;        page = gtk_notebook_current_page(notebook);    gtk_notebook_remove_page (notebook, page);    /* Need to refresh the widget --      This forces the widget to redraw itself. */    gtk_widget_draw(GTK_WIDGET(notebook), NULL);}void destroy (GtkWidget *widget, gpointer *data){    gtk_main_quit ();}int main (int argc, char *argv[]){    GtkWidget *window;    GtkWidget *button;    GtkWidget *table;    GtkWidget *notebook;    GtkWidget *frame;    GtkWidget *label;    GtkWidget *checkbutton;    int i;    char bufferf[32];    char bufferl[32];        gtk_init (&amp;argc, &amp;argv);        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);        gtk_signal_connect (GTK_OBJECT (window), &quot;destroy&quot;,                        GTK_SIGNAL_FUNC (destroy), NULL);        gtk_container_border_width (GTK_CONTAINER (window), 10);        table = gtk_table_new(2,6,TRUE);    gtk_container_add (GTK_CONTAINER (window), table);        /* Create a new notebook, place the position of the tabs */    notebook = gtk_notebook_new ();    gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), GTK_POS_TOP);    gtk_table_attach_defaults(GTK_TABLE(table), notebook, 0,6,0,1);    gtk_widget_show(notebook);        /* lets append a bunch of pages to the notebook */    for (i=0; i &lt; 5; i++) {        sprintf(bufferf, &quot;Append Frame %d&quot;, i+1);        sprintf(bufferl, &quot;Page %d&quot;, i+1);                frame = gtk_frame_new (bufferf);        gtk_container_border_width (GTK_CONTAINER (frame), 10);        gtk_widget_set_usize (frame, 100, 75);        gtk_widget_show (frame);                label = gtk_label_new (bufferf);        gtk_container_add (GTK_CONTAINER (frame), label);        gtk_widget_show (label);                label = gtk_label_new (bufferl);        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame, label);    }            /* now lets add a page to a specific spot */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -