gtk+ 表格容器(table)操作函數(shù)的學(xué)習(xí)
一、函數(shù)介紹
兩個函數(shù)原型分別為:
參數(shù)解釋:
table為表容器的名字,
child和widget為需要添加到表容器的構(gòu)件的名字。
left_attach:構(gòu)件所在表格cell左上角坐標(biāo)的x值
right_attach:構(gòu)件所在表格cell右下角坐標(biāo)的x值
top_attach:構(gòu)件所在表格cell的左上角坐標(biāo)的y值
botton_attach:構(gòu)件所在表格cell的右下角坐標(biāo)的y值
這里值得一提的是:多個cell可以組成一個大cell,此時(shí)的大cell的參數(shù)計(jì)算方法也是按左上角和右下角的坐標(biāo)值來計(jì)算。
xoptions:控制表格cell的x方向的填充方式
yoptions:控制表格cell的y方向的填充方式
填充方式可以用GTK_FILL、GTK_SHRINK和GTK_EXPAND,或者用3者的任意組合。其中GTK_FILL選項(xiàng)表示構(gòu)件充分利用分配給它的空間進(jìn)行擴(kuò)展。GTK_SHRINK選項(xiàng)允許構(gòu)件縮小到比原來分配的空間還小的空間。GTK_EXPAND選項(xiàng)使表擴(kuò)展填滿它插入的所有空間。
xpadding:表示x方向圍繞構(gòu)件填充的像元數(shù)。
ypadding:表示y方向圍繞構(gòu)件填充的像元數(shù)。
二、用法介紹
從功能上來說,兩個函數(shù)都可以實(shí)現(xiàn)將構(gòu)件加到表中的功能。但是添加的方式不一樣。從上面展示的函數(shù)原型來看,gtk_table_attach與gtk_table_attach_defaults前6個參數(shù)是一樣的,但函數(shù)名后者比前者多了一個“defaults”,它表示的意思是gtk_table_attach_defaults沒有進(jìn)行傳遞的參數(shù)都采用默認(rèn)值。即:
xoptions和yoptions的值為(GTK_FILL|GTK_EXPAND),表示構(gòu)建將完全占滿分配給它的表格空間,此時(shí)若我們直接將控件加入表格,那么我們對控件大小的設(shè)置將會失效,控件的大小將有表格的cell的大小決定。
xpadding和ypadding:默認(rèn)為0,目前來看可以設(shè)置為0。
因此,
(1)倘若我們無需對控件在表格中的大小進(jìn)行干預(yù),則可以直接使用gtk_table_attach_dfaults將控件放入表格中,此時(shí)控件的大小與表格的cell保持一致。
(2)若我們需要對控件在表格中的大小進(jìn)行干預(yù),則需要調(diào)用gtk_table_attach,將控件在表格cell中的填充方式設(shè)置為GTK_SHRINK,允許控件的大小小于表格cell的大小。此時(shí)再調(diào)用gtk_widget_set_size_request函數(shù)設(shè)置控件的大小(不能大于表格cell),即可完成對表格中控件大小的控制。當(dāng)然,我們也可以將控件先放入一個固定容器后,再放入表格中,兩種方式的優(yōu)劣可能只是在內(nèi)存占用上的區(qū)別,都可以使用控件大小的控制。