?? x453.html
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><HTML><HEAD><TITLE>用表組裝</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+"><LINKREL="HOME"TITLE="GTK+ 2.0 教程"HREF="book1.html"><LINKREL="UP"TITLE="組裝構(gòu)件"HREF="c418.html"><LINKREL="PREVIOUS"TITLE="組裝示范程序"HREF="x450.html"><LINKREL="NEXT"TITLE="表組裝示例"HREF="x505.html"></HEAD><BODYCLASS="SECT1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLESUMMARY="Header navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">GTK+ 2.0 教程</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="x450.html"ACCESSKEY="P"><<< Previous</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">組裝構(gòu)件</TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="x505.html"ACCESSKEY="N">Next >>></A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="SECT1"><H1CLASS="SECT1"><ANAME="SEC-PACKINGUSINGTABLES">用表組裝</H1><P>讓我們看看另一種組裝的方法 - 表(Tables)。 在某些情況下這是極其有用的。</P><P>使用表的時(shí)候,我們建立格來(lái)放入構(gòu)件。構(gòu)件可以占滿我們所指定的所有空間.</P><P>第一個(gè)要看的,當(dāng)然是gtk_table_new()這個(gè)函數(shù):</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">GtkWidget *gtk_table_new( guint rows, guint columns, gboolean homogeneous );</PRE></TD></TR></TABLE><P>第一個(gè)參數(shù)是表中要安排的行的數(shù)量,而第二個(gè),顯然,就是列的數(shù)量。</P><P>homogeneous 參數(shù)跟表格框(table's boxes)的大小處理有關(guān)。如果 homogeneous 是 TRUE,所有表格框的大小都將調(diào)整為表中最大構(gòu)件的大小。如果 homogeneous 為 FALSE,每個(gè)表格框?qū)?huì)按照同行中最高的構(gòu)件,與同列中最寬的構(gòu)件來(lái)決定自身的大小。</P><P>行與列為從0到n編號(hào),而n是我們?cè)谡{(diào)用 gtk_table_new 時(shí)所指定的值。所以,如果你指定rows = 2及columns = 2, 布局圖會(huì)看起來(lái)像這樣:</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING"> 0 1 20+----------+----------+ | | |1+----------+----------+ | | |2+----------+----------+</PRE></TD></TR></TABLE><P>注意坐標(biāo)系統(tǒng)開(kāi)始于左上角。要向框中放置一個(gè)構(gòu)件,使用下面的函數(shù):</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_table_attach( GtkTable *table, GtkWidget *child, guint left_attach, guint right_attach, guint top_attach, guint bottom_attach, GtkAttachOptions xoptions, GtkAttachOptions yoptions, guint xpadding, guint ypadding );</PRE></TD></TR></TABLE><P>第一個(gè)參數(shù)("table")是你已經(jīng)創(chuàng)建的表,第二個(gè)參數(shù)("child")是你想放進(jìn)表里的構(gòu)件。</P><P>left_attach和right_attach參數(shù)指定構(gòu)件放置的位置,并使用多少框來(lái)放。如果你想在2x2的表中的右下表項(xiàng)(table entry)處放入一個(gè)按鈕,并且想讓它<ICLASS="EMPHASIS">只</I>充滿這個(gè)項(xiàng),則left_attach應(yīng)該為 = 1, right_attach = 2, top_attach = 1, bottom_attach = 2。</P><P>現(xiàn)在,如果你想讓一個(gè)構(gòu)件占據(jù)我們這個(gè)2x2表的整個(gè)頂行,你就用left_attach = 0, right_attach = 2, top_attach = 0, bottom_attach = 1。</P><P>xoptions及yoptions是用來(lái)指定組裝時(shí)的選項(xiàng),可以通過(guò)使用“位或”運(yùn)算以允許多重選項(xiàng)。</P><P>這些選項(xiàng)是:</P><P></P><DIVCLASS="VARIABLELIST"><DL><DT><TTCLASS="LITERAL">GTK_FILL</TT></DT><DD><P>如果表框大于構(gòu)件,同時(shí)<TTCLASS="LITERAL">GTK_FILL</TT>被指定,該構(gòu)件會(huì)擴(kuò)展開(kāi)以使用所有可用的空間。</P></DD><DT><TTCLASS="LITERAL">GTK_SHRINK</TT></DT><DD><P>如果表構(gòu)件分配到的空間比需求的小(通常是用戶在改變窗口大小的時(shí)候),那么構(gòu)件將會(huì)推到窗口的底部以外的區(qū)域,無(wú)法看見(jiàn)。如果<TTCLASS="LITERAL">GTK_SHRINK</TT>被指定了,構(gòu)件將和表一起縮小。</P></DD><DT><TTCLASS="LITERAL">GTK_EXPAND</TT></DT><DD><P>這會(huì)導(dǎo)致表擴(kuò)展以用完窗口中所有的保留空間。</P></DD></DL></DIV><P>Padding和在盒(boxes)中的一樣,在構(gòu)件的周?chē)a(chǎn)生一個(gè)指定象素的空白區(qū)域。</P><P>gtk_table_attach()有<ICLASS="EMPHASIS">很多</I>選項(xiàng),所以,這里有一個(gè)簡(jiǎn)寫(xiě):</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_table_attach_defaults( GtkTable *table, GtkWidget *widget, guint left_attach, guint right_attach, guint top_attach, guint bottom_attach );</PRE></TD></TR></TABLE><P>X及Y選項(xiàng)默認(rèn)為<TTCLASS="LITERAL">GTK_FILL | GTK_EXPAND</TT>,X和Y的padding則設(shè)為0。其余的參數(shù)與前面的函數(shù)一樣。</P><P>我們還有 gtk_table_set_row_spacing() 和 gtk_table_set_col_spacing()。這些在指定的行或列之間插入空白。</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_table_set_row_spacing( GtkTable *table, guint row, guint spacing );</PRE></TD></TR></TABLE><P>和</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_table_set_col_spacing ( GtkTable *table, guint column, guint spacing );</PRE></TD></TR></TABLE><P>注意,對(duì)列來(lái)說(shuō),空白插到列的右邊,對(duì)行來(lái)說(shuō),空白插入行的下邊。</P><P>也可以為所有的行或/和列設(shè)置相同的間隔:</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_table_set_row_spacings( GtkTable *table, guint spacing );</PRE></TD></TR></TABLE><P>和,</P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><PRECLASS="PROGRAMLISTING">void gtk_table_set_col_spacings( GtkTable *table, guint spacing );</PRE></TD></TR></TABLE><P>注意,用這些調(diào)用,最后一行和最后一列并不會(huì)有任何空白存在。</P></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLESUMMARY="Footer navigation table"WIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="x450.html"ACCESSKEY="P"><<< Previous</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="book1.html"ACCESSKEY="H">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="x505.html"ACCESSKEY="N">Next >>></A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">組裝示范程序</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="c418.html"ACCESSKEY="U">Up</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">表組裝示例</TD></TR></TABLE></DIV></BODY></HTML>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -