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

转自:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-29 14:55:57

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

GTK入门学习:布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_new(void); 返回值:固定布局容器指针 固定布局容器添加控件: void gtk_fixed_put( GtkFixed *fixed, GtkWidget *widget, gint x, gint y ); fixed:容纳控件的容器 widget:要添加的控件 x, y:控件摆放位置的起点

GTK入门学习:布局容器之水平布局

如果我们希望窗口里多放添加几个控件,直接添加是不成功的,因为窗口只能容纳一个控件的容器.这时候,我们需要借助布局容器,我们先把布局容器添加到窗口里,然后再把所需要添加的控件放在布局容器里. 布局容器的主要分类:水平布局( GtkHBox).垂直布局(GtkVBox ).表格布局(GtkTable).固定布局(GtkFixed ). 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); h

GTK入门学习:布局练习之计算器

接下来,我们做一个布局练习,如下图: 我们用表格布局实现,表格布局参考坐标如下: 这里我们用到行编辑控件( GtkEntry ). 行编辑的创建: GtkWidget * gtk_entry_new(void); 返回值:行编辑指针行 编辑内容的设置: void gtk_entry_set_text (GtkEntry *entry,const gchar *text); entry: 行编辑 text: 需要设置的内容 设置行编辑是否允许编辑: void gtk_editable_set_ed

布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_new(void); 返回值:固定布局容器指针 固定布局容器添加控件: void gtk_fixed_put( GtkFixed *fixed, GtkWidget *widget, gint x, gint y ); fixed:容纳控件的容器 widget:要添加的控件 x, y:控件摆放位置的起点

GTK入门学习:布局容器之垂直布局

垂直布局和水平布局的用法基本是一样,无非是新建垂直布局容器接口,还有控件摆放的方向不同. 垂直布局容器的创建: GtkWidget *gtk_vbox_new( gboolean homogeneous, gint spacing ); 完整代码如下: #include <gtk/gtk.h> int main(int argc, char *argv[]) { //1.gtk初始化 gtk_init(&argc, &argv); //2.创建一个窗口 GtkWidget *w

GTK入门学习:glade的使用

搭建好环境后,在终端敲 glade 即可启动glade工具. glade的整体框图: 常用控件选择区:列举了常用的控件,常用的有三类:顶层(主窗口等),容器(各种布局容器等),控制和显示(按钮.便签.图片控件等) 当鼠标放在控件时,会自动显示控件的中文文字,同时,还能人为设置,如下图: 界面编辑区:把控件拖放在这进行进行相应的布局 控件监视区:能够看到界面上所有的控件,同时,选中这个控件,可以看到这个控件的具体类型 属性编辑区:编辑选中控件的常用属性,如窗口设置标题.窗口类型.屏幕上显示位置等.

布局方式-表格布局

普通的表格布局 <style> .table { display: table; width: 800px; height: 200px; } .table-row { display: table-row; } .table-cell { vertical-align: middle; display: table-cell; } .left { background: red; } .right { background: blue; } </style> <body&g

GTK入门学习:信号与回调函数

前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号与回调函数. GTK采用了信号与回调函数来处理窗口外部传来的事件.消息或信号.当信号发生时,程序自动调用为信号连接的回调函数. 学习应用编程,我们会经常接触到"信号"这个名词.GTK中的"信号"实际上是一种软件中断."中断"在我们生活中经常遇到,譬如,我正在房间里打游戏,突然送快递的来了,把正在玩游戏的我给"中断"了