找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 6923|回复: 0
收起左侧

GTK窗口布局管理------TABLE和BOX

[复制链接]
ID:72519 发表于 2015-1-23 19:58 | 显示全部楼层 |阅读模式
GTK窗口布局管理控件常用到有两个box和table。box即盒子,有水平和垂直之分,故box只能针对控件进行一维空间布局,对二维空间来讲,box显得很笨重。
table即表,就是说把控件的空间布局看作是一张表,很好到利用了平面坐标的原理。其实它就是通过使用多个vbox和hbox来实现控件到排列。

box的创建方法:
vbox = gtk_vbox_new(TRUE, 1);上面程序中生成了GtkVBox。 我们把其中的第一个参数设置为 TRUE。这就意味着,程序中我的按钮都为同样的大小。至于按钮之间的距离大小被设置为“1”象素。
settings = gtk_button_new_with_label("Settings");
gtk_box_pack_start(GTK_BOX(vbox), settings, TRUE, TRUE, 0);在上面的程序中我们把“settings “按钮布局在vbox容器构件中。 至于函数实参中的前两个参数,分别是容器构件和我们要放置的子构件。接下来的三个参数中分别是expand, fill和padding。 值得注意的是如果fill对应的参数是FALSE,则按钮就不会充满整个vbox构件。比较类似的是,如果之前在gtk_vbox_new(TRUE, 1);已经设置按钮都是等宽高了,所以expand对应的参数,是完全没有效果的。(译者注:此处建议fill expand都设为TRUE,至于具体区别和含义可在编程时感受)
table的创建方法:
pHtable = gtk_table_new(4, 3, TRUE)上面程序创建了一个4行3列的容器。
pHlable[0] = gtk_label_new("Test1");
pHlable[1] = gtk_label_new("Test2");
pHlable[2] = gtk_label_new("Test3");
pHlable[3] = gtk_label_new("Test4");
pHedit = gtk_entry_new();
        
gtk_table_attach(GTK_TABLE(pHtable),pHlable[0],0,1,0,1,GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pHtable),pHlable[1],1,2,0,1,GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pHtable),pHlable[2],2,3,0,1,GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pHtable),pHlable[3],1,2,1,2,GTK_EXPAND, GTK_EXPAND, 0, 0);
gtk_table_attach(GTK_TABLE(pHtable),pHedit,2,3,2,3,GTK_EXPAND, GTK_EXPAND, 0, 0);上面的代码创建了4个label和一个edit控件,并分别布局在如下图所示到table中。
上面代码的gtk_table_attach(GTK_TABLE(pHtable),pHlable[0],0,1,0,1,GTK_EXPAND, GTK_EXPAND, 0, 0)的第3到6个参数共4个参数分别表示控件在table中的左上角和右上角的横坐标以及左下角和左下角纵坐标值。
0              1              2          3
0+----------+----------+----------+
|              |              |              |
1+----------+----------+----------+
|              |              |              |
2+----------+----------+----------+
|              |              |              |
3+----------+----------+----------+
|              |              |              |
4+----------+----------+----------+
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表