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

📄 gtk_tut-8.html

📁 gtk 开发手册和参考文档。 包括gtk glib gdk等
💻 HTML
📖 第 1 页 / 共 2 页
字号:
    checkbutton = gtk_check_button_new_with_label (&quot;Check me please!&quot;);    gtk_widget_set_usize(checkbutton, 100, 75);    gtk_widget_show (checkbutton);        label = gtk_label_new (&quot;Add spot&quot;);    gtk_container_add (GTK_CONTAINER (checkbutton), label);    gtk_widget_show (label);    label = gtk_label_new (&quot;Add page&quot;);    gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), checkbutton, label, 2);        /* Now finally lets prepend pages to the notebook */    for (i=0; i &lt; 5; i++) {        sprintf(bufferf, &quot;Prepend Frame %d&quot;, i+1);        sprintf(bufferl, &quot;PPage %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_prepend_page (GTK_NOTEBOOK(notebook), frame, label);    }        /* Set what page to start at (page 4) */    gtk_notebook_set_page (GTK_NOTEBOOK(notebook), 3);            /* create a bunch of buttons */    button = gtk_button_new_with_label (&quot;close&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               GTK_SIGNAL_FUNC (destroy), NULL);    gtk_table_attach_defaults(GTK_TABLE(table), button, 0,1,1,2);    gtk_widget_show(button);        button = gtk_button_new_with_label (&quot;next page&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               (GtkSignalFunc) gtk_notebook_next_page,                               GTK_OBJECT (notebook));    gtk_table_attach_defaults(GTK_TABLE(table), button, 1,2,1,2);    gtk_widget_show(button);        button = gtk_button_new_with_label (&quot;prev page&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               (GtkSignalFunc) gtk_notebook_prev_page,                               GTK_OBJECT (notebook));    gtk_table_attach_defaults(GTK_TABLE(table), button, 2,3,1,2);    gtk_widget_show(button);        button = gtk_button_new_with_label (&quot;tab position&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               (GtkSignalFunc) rotate_book, GTK_OBJECT(notebook));    gtk_table_attach_defaults(GTK_TABLE(table), button, 3,4,1,2);    gtk_widget_show(button);        button = gtk_button_new_with_label (&quot;tabs/border on/off&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               (GtkSignalFunc) tabsborder_book,                               GTK_OBJECT (notebook));    gtk_table_attach_defaults(GTK_TABLE(table), button, 4,5,1,2);    gtk_widget_show(button);        button = gtk_button_new_with_label (&quot;remove page&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               (GtkSignalFunc) remove_book,                               GTK_OBJECT(notebook));    gtk_table_attach_defaults(GTK_TABLE(table), button, 5,6,1,2);    gtk_widget_show(button);        gtk_widget_show(table);    gtk_widget_show(window);        gtk_main ();        return 0;}</PRE></CODE></BLOCKQUOTE><P><P><H2><A NAME="ss8.2">8.2 卷动视窗</A></H2><P>卷动视窗是用来产生在视窗内可卷动的区域.您可以在卷动视窗中插入任意种物件,而不管视窗大小如何, 这些物件因为在卷动区域内, 因此都可以被用到.<P>您可以用以下函数来产生卷动视窗:<P><BLOCKQUOTE><CODE><PRE>GtkWidget* gtk_scrolled_window_new (GtkAdjustment *hadjustment,                                    GtkAdjustment *vadjustment);</PRE></CODE></BLOCKQUOTE><P>第一个参数是水平调整方向,第二个是垂直调整方向.它们一般被设为NULL.<P><BLOCKQUOTE><CODE><PRE>void gtk_scrolled_window_set_policy      (GtkScrolledWindow *scrolled_window,                                          GtkPolicyType      hscrollbar_policy,                                                                                  GtkPolicyType      vscrollbar_policy);</PRE></CODE></BLOCKQUOTE><P>第一个参数是想要改变的视窗.第二个是设定水平卷动的方式,第三个是垂直卷动的方式.  <P>policy可以是GTK_POLICY_AUTOMATIC, 或GTK_POLICY_ALWAYS.GTK_POLICY_AUTOMATIC会自动决定是否使用scrollbars.GTK_POLICY_ALWAYS则scrollbars始终在那里.<P>这里是个将100个双态按钮包进一个卷动视窗的范例.<P><BLOCKQUOTE><CODE><PRE>#include &lt;gtk/gtk.h&gt;void destroy(GtkWidget *widget, gpointer *data){    gtk_main_quit();}int main (int argc, char *argv[]){    static GtkWidget *window;    GtkWidget *scrolled_window;    GtkWidget *table;    GtkWidget *button;    char buffer[32];    int i, j;        gtk_init (&amp;argc, &amp;argv);        /* Create a new dialog window for the scrolled window to be     * packed into.  A dialog is just like a normal window except it has a      * vbox and a horizontal seperator packed into it.  It's just a shortcut     * for creating dialogs */    window = gtk_dialog_new ();    gtk_signal_connect (GTK_OBJECT (window), &quot;destroy&quot;,                        (GtkSignalFunc) destroy, NULL);    gtk_window_set_title (GTK_WINDOW (window), &quot;dialog&quot;);    gtk_container_border_width (GTK_CONTAINER (window), 0);        /* create a new scrolled window. */    scrolled_window = gtk_scrolled_window_new (NULL, NULL);        gtk_container_border_width (GTK_CONTAINER (scrolled_window), 10);        /* the policy is one of GTK_POLICY AUTOMATIC, or GTK_POLICY_ALWAYS.     * GTK_POLICY_AUTOMATIC will automatically decide whether you need     * scrollbars, wheras GTK_POLICY_ALWAYS will always leave the scrollbars     * there.  The first one is the horizontal scrollbar, the second,      * the vertical. */    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),                                    GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);    /* The dialog window is created with a vbox packed into it. */                                                                  gtk_box_pack_start (GTK_BOX (GTK_DIALOG(window)-&gt;vbox), scrolled_window,                         TRUE, TRUE, 0);    gtk_widget_show (scrolled_window);        /* create a table of 10 by 10 squares. */    table = gtk_table_new (10, 10, FALSE);        /* set the spacing to 10 on x and 10 on y */    gtk_table_set_row_spacings (GTK_TABLE (table), 10);    gtk_table_set_col_spacings (GTK_TABLE (table), 10);        /* pack the table into the scrolled window */    gtk_container_add (GTK_CONTAINER (scrolled_window), table);    gtk_widget_show (table);        /* this simply creates a grid of toggle buttons on the table     * to demonstrate the scrolled window. */    for (i = 0; i &lt; 10; i++)            for (j = 0; j &lt; 10; j++) {                sprintf (buffer, &quot;button (%d,%d)\n&quot;, i, j);                button = gtk_toggle_button_new_with_label (buffer);                gtk_table_attach_defaults (GTK_TABLE (table), button,                                           i, i+1, j, j+1);                gtk_widget_show (button);            }        /* Add a &quot;close&quot; button to the bottom of the dialog */    button = gtk_button_new_with_label (&quot;close&quot;);    gtk_signal_connect_object (GTK_OBJECT (button), &quot;clicked&quot;,                               (GtkSignalFunc) gtk_widget_destroy,                               GTK_OBJECT (window));        /* this makes it so the button is the default. */        GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)-&gt;action_area), button, TRUE, TRUE, 0);        /* This grabs this button to be the default button. Simply hitting     * the &quot;Enter&quot; key will cause this button to activate. */    gtk_widget_grab_default (button);    gtk_widget_show (button);        gtk_widget_show (window);        gtk_main();        return(0);}</PRE></CODE></BLOCKQUOTE><P>玩弄一下这个视窗.您会看到scrollbars如何反应.您也会想用用gtk_widget_set_usize()来设定视窗内定的大小.<P><HR><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></BODY></HTML>

⌨️ 快捷键说明

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