4.4 使用表格来封装
我们来看看另一个封装的方法 - 用表格. 在很多状况下, 这是极其有用的.
使用表格, 我们产生格线来将物件放入. 物件会照我们安排的位置排入.
我们第一个要看的是gtk_table_new这个函数:
|
第一个参数是多少列, 第二个是多少栏.
homogeneous参数用来决定表格如何来定大小. 若homogeneous为TRUE, table boxes会被重定为在其中最大物件的大小. 若homogeneous为FALSE, 则其大小为, "高"为列中最高的物件, 及"宽"栏中最宽的物件大小.
列及栏的编号为从0到n. n是我们在gtk_table_new中所指定的值. 所以, 如果您指定rows = 2及columns = 2, 整个排列会看起来像这样:
|
坐标系统开始於左上角. 要把物件放进box中, 可用以下函数:
|
第一个参数("table")是您才刚产生的表格, 而第二个("child")是您想放进去的物件.
而left_attach及right_attach参数指定要把物件放在那里, 及用多少个boxes. 如果您想要用右下角的表格, 可以这样填表. left_attach = 1, right_attach = 2, top_attach = 1, bottom_attach = 2.
现在, 如果您想要物件来使用上面2x2的表格, 您可以使用left_attach = 0, right_attach =2, top_attach = 0, bottom_attach = 1.
xoptions及yoptions是用来指定封装选项, 可以同时组合多个选项(用or).
这些选项是:
GTK_FILL - 如果table box大过物件, 且GTK_FILL 被指定了, 该物件会扩展成使用所有可用的空间.
GTK_SHRINK - 如果table widget小於该物件, (一般是使用者缩放该视窗), 那麽该物件将会一直被挤压到看不见为止. 如果GTK_SHRINK被指定了, 该物件会跟著table一起缩小.
GTK_EXPAND - 这会使table本身扩展, 并利用视窗中所有可用空间.
填空就像boxes, 产生一个在物件周边空白的区域.
gtk_table_attach()有许多选项. 这里有个捷径:
|
X及Y选项内定为GTK_FILL | GTK_EXPAND, X及Y填空则设为0. 其馀的参数则相同於以上的函数.
我们另外有gtk_table_set_row_spacing()及gtk_table_set_col_spacing(). 这些会在指定的栏及列插入空白.
|
对栏来说, 空格是在栏的右边. 而列则是在下面.
您也可以用以下函数来产生固定的空格.
|
使用这些函数, 其最後一栏及最後一列并没有空格存在.
4.5 Table Packing范例
目前并无说明, 请参照testgtk.c
5. 物件概论
在GTK下,一般产生物件的步骤为:
gtk_*_new - 最普遍产生物件的函数.
连接信号到信号处理器.
设定物件属性.
要将物件包装到一个container可用gtk_container_add()或gtk_box_pack_start().
gtk_widget_show().
gtk_widget_show()让GTK知道我们已经完成设定的工作, 并且已经准备好要显示. 您也可以用gtk_widget_hide来隐藏它. 显示物件的顺序并不太重要, 但我建议最後才显示, 这样才不会看到这些视窗们一个一个被画出来. 子物件在使用gtk_widget_show使视窗出现之前是不会被显示出来的.
5.1 分派系统
再继续下去您会发现, GTK使用一种分派系统. 一般是用巨集来完成. 您可以看到诸如以下:
|
这些在函数中的都是分派参数. 您可以在范例中看到, 而且只要看到该函数就会知道它们是做什麽用的.
从以下的组织图来看, 所有GtkWidgets都是由GtkObject而来. 这意味著您可以在任何地方, 透过GTK_OBJECT()巨集要求一个物件.
例如:
上一篇:GTK+/Gnome应用开发 下一篇:GTK v1.2 Tutorial(英文) 更多相关文章
|
推荐文章
精彩文章
|