GTK入门学习:布局容器之表格布局

学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可。假如我们要完成下图的布局,我们该怎么做呢?



1)创建一个垂直布局容器( A )
2)创建一个水平布局容器( B ),一个close按钮( C )
3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A )
4)创建button 1按钮( D ) 和 button 2按钮( E )
5)再将button 1按钮 和 button 2按钮添加到水平布局容器里( 将 D 和 E 添加到 B )


这样是可以完成上图的布局,但是,假如布局里有有很多控件,我们只是通过水平和垂直容器嵌套布局会很麻烦,而且,控件越多,布局越麻烦。有没有更简单的方法呢?有,就是我们马上要学习的表格布局,具体的操作流程和水平垂直布局一样。

1)创建主窗口

2)创建布局容器

3)布局容器添加到窗口里

4)创建所需控件

5)控件添加到布局容器里

6)显示所有控件


表格布局容器的创建:
GtkWidget *gtk_table_new( 

guint rows, 

guint columns, 

gboolean homogeneous );

rows: 行数
coumns: 列数
homogeneous:容器内表格的大小是否相等
返回值:表格布局容器指针


布局容器添加控件:
void gtk_table_attach_defaults(

GtkTable *table, 

GtkWidget *widget,

guint left_attach,

guint right_attach,

guint top_attach,

guint bottom_attach );

table:  容纳控件的容器 
widget: 要添加的控件
后四个参数为控件摆放的坐标,规则如下:



完整代码如下:

#include <gtk/gtk.h>

int main(int argc, char *argv[])
{
        //1.gtk初始化
        gtk_init(&argc, &argv);

        //2.创建一个window
        GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

        //3.1创建一个table,2行2列
        GtkWidget *table = gtk_table_new(2,2,TRUE);
        //3.2将table加入到window中
        gtk_container_add(GTK_CONTAINER(window), table);


        //4.1.1创建一个button
        GtkWidget *button = gtk_button_new_with_label("button1");
        //4.1.2将button加入到table
        gtk_table_attach_defaults(GTK_TABLE(table),button, 0,1,0,1);

        //4.2.1创建一个button
        button = gtk_button_new_with_label("button2");
        //4.1.2将button加入到table
        gtk_table_attach_defaults(GTK_TABLE(table),button, 1,2,0,1);


         //4.3.1创建一个button
        button = gtk_button_new_with_label("button3");
        //4.3.2将button加入到table
        gtk_table_attach_defaults(GTK_TABLE(table),button, 0,2,1,2);


        //5.显示所有窗口
        gtk_widget_show_all(window);

        //6.循环主事件
        gtk_main();

        return 0;
}

运行结果:



源代码下载:http://download.csdn.net/download/lianghe_work/8934129

转自:

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值