布局容器之表格布局

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

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[])
{
	gtk_init(&argc, &argv); 	// 初始化

	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);    // 创建窗口

	GtkWidget *table = gtk_table_new(2, 2, TRUE);	// 表格布局,2行2列
	gtk_container_add(GTK_CONTAINER(window), table); // 容器加入窗口

	// button 1
	GtkWidget *button = gtk_button_new_with_label("buttton 1");
	gtk_table_attach_defaults(GTK_TABLE(table), button, 0, 1, 0, 1);// 把按钮加入布局

	// button 2
	button = gtk_button_new_with_label("button 2");
	gtk_table_attach_defaults(GTK_TABLE(table), button, 1, 2, 0, 1);

	// close button
	button = gtk_button_new_with_label("close");
	gtk_table_attach_defaults(GTK_TABLE(table), button, 0, 2, 1, 2);

	gtk_widget_show_all(window);	// 显示窗口控件

	gtk_main(); 	// 主事件循环

	return 0;
} 
时间: 2024-08-25 09:13:14

布局容器之表格布局的相关文章

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

布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: 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入门学习:布局容器之固定布局

前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: 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

布局方式-表格布局

普通的表格布局 <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

表格布局 table

设置整个容器的宽度为100%,设置三个部分均为表格,然后左边的单元格为 300px,右边的单元格为 300px,即可.中间的单元格会自适应. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> html * { padding: 0; margin

HTML表格布局实际使用详解

现在,表格<table>一般不再用于网页整体的布局.不过,在面对某些特定的设计,如表单输入.数据呈现时,表格则可能是最恰当的选择. 关于表格的直观印象,就是由多个单元格(cell)整齐排列而成的元素,可以明确看出行(row)和列(column).这可以联想到Excel,由Excel在数据处理和统计上的地位,就可以理解网页中表格的意义. 简单来说,能直观感受到多个元素是以行和列的概念排列时,用表格会让你轻松很多.如caniuse.com中应用表格的例子: 表格布局计算 使用表格很简单,但有时候表

零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」

原文:零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的布局容器大哥-「Grid」. ? 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的布局容器大哥-「Grid」. ? ? ? 就是要让不会的新手都看的懂! ? ? ? <实至名归的容器大哥> Blend 4内的容器有很多种,比较常运用到的除了有Grid.Can