假设我们希望窗体里多放加入几个控件,直接加入是不成功的。由于窗体仅仅能容纳一个控件的容器。

这时候。我们须要借助布局容器,我们先把布局容器加入到窗体里。然后再把所须要加入的控件放在布局容器里。

布局容器的主要分类:水平布局( GtkHBox)、垂直布局(GtkVBox )、表格布局(GtkTable)、固定布局(GtkFixed )。

水平布局容器:

水平布局容器的创建:

GtkWidget *gtk_hbox_new( gboolean homogeneous,

gint spacing );

homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE )

spacing:控件之间的间隔( 以像素点为单位 )。gint相当于 C语言的int

返回值:水平布局控件指针





容器加入加入控件:

void gtk_container_add(GtkContainer *container,

GtkWidget *widget);

container:容纳控件的容器

widget:要加入的控件





显示容器上全部控件

void gtk_widget_show_all(GtkWidget *widget);

widget:须要显示的控件

完整代码例如以下:

#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
//1.gtk环境初始化
gtk_init(&argc, &argv); //2.创建一个窗体
//GtkWidget *window = gtk_window_new(GTK_WINDOW_POPUP); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //设置窗体标题
gtk_window_set_title(GTK_WINDOW(window), "hbox"); //3.1创建一个水平容器
GtkWidget *hbox = gtk_hbox_new(TRUE, 10);
//3.2将水平容器增加到窗体中
gtk_container_add(GTK_CONTAINER(window), hbox); //4.1.1创建按钮button1
GtkWidget *button1 = gtk_button_new_with_label("button1");
//4.1.2将button1增加到hbox中
gtk_container_add(GTK_CONTAINER(hbox), button1); //4.2.1创建按钮button2
GtkWidget *button2 = gtk_button_new_with_label("button2");
//4.2.2将button2增加到hbox
gtk_container_add(GTK_CONTAINER(hbox), button2); //4.3.1创建按钮button3
GtkWidget *button3 = gtk_button_new_with_label("button3");
//4.3.2将button2增加到hbox
gtk_container_add(GTK_CONTAINER(hbox), button3); //5.显示全部文件
gtk_widget_show_all(window); //6.主事件循环
gtk_main(); return 0;
}

执行结果:

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

转自:http://blog.csdn.net/tennysonsky/article/details/42741907

阿斯达

GTK入门学习:布局容器之水平布局的更多相关文章

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

    前面我们学习的水平.垂直和表格布局容器,控件会跟着容器大小的变化进行自己主动适应.而固定布局容器里的控件则不会跟着变化( 则固定不变 ). 固定布局的创建: GtkWidget *gtk_fixed_ ...

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

    接下来,我们做一个布局练习.例如以下图: 我们用表格布局实现,表格布局參考坐标例如以下: 这里我们用到行编辑控件( GtkEntry ). 行编辑的创建: GtkWidget * gtk_entry_ ...

  3. GTK入门学习:glade的使用

    搭建好环境后,在终端敲 glade 就可以启动glade工具. glade的总体框图: 经常使用控件选择区:列举了经常使用的控件,经常使用的有三类:顶层(主窗体等).容器(各种布局容器等).控制和显示 ...

  4. 微信小程序开发入门学习(2):小程序的布局

    概述 小程序的布局采用了和Css3中相同的 flex(弹性布局)方式,使用方法也类似(只是属性名不同而已). 水平排列 默认是从左向右水平依次放置组件,从上到下依次放置组件. 任何可视组件都需要使用样 ...

  5. 《精通CSS第3版》(6)内容布局(定位+水平布局)

  6. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解

    一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...

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

    原文:零元学Expression Blend 4 - Chapter 8 用实例了解布局容器系列-「Grid」 本系列将教大家以实做案例认识Blend 4 的布局容器,此章介绍的是Blend 4 里的 ...

  8. elementUI 学习入门之 container 布局容器

    Container 布局容器 用于布局的容器组件,方便快速搭建页面基本结构 <el-container> : 外层容器.当子元素包含 <el-header> 或 <el- ...

  9. 学习WPF——WPF布局——了解布局容器

    WPF布局工作内部原理 WPF渲染布局时主要执行了两个工作:测量和排列 测量阶段,容器遍历所有子元素,并询问子元素所期望的尺寸 排列阶段,容器在合适的位置放置子元素,并设置元素的最终尺寸 这是一个递归 ...

随机推荐

  1. Visual studio 新建网站出现序号(x)

    参考链接: http://www.zhongdaiqi.com/vs2012-new-website-name-bug/ 现象: 分析: VS新建网站出现(1) 这个问题很神秘,把网站删除掉,再创建, ...

  2. 获取class

    使用原生JavaScript,获取类操作符时:即使使用getElementByClassName,在Firefox和IE9以下是不兼容的.Firefox下是可以用它获取的到元素而IE不行,一般框架都会 ...

  3. 大数据学习——hbase的shell客户端基本使用

    1  基本shell命令 1 在hbase的 bin目录下进入命令行 ./hbase shell 2 查看有哪些表 list 3 创建一个表 create 't_user_info', {NAME = ...

  4. ubuntu14.04:php7+apache2+mysql

    apache2: sudo apt-get install apache2 apache2-dev service apache2 start mysql: sudo apt-get install ...

  5. 九度oj 题目1096:日期差值

    题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD 输出: 每组数据输出一行, ...

  6. resetlogs报错 ORA-00392

      alter database open resetlogs或者 alter database open resetlogs upgrade报错:ORA-00392     在rman restor ...

  7. BZOJ 1036: [ZJOI2008]树的统计Count 【树链剖分】

    Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. Q ...

  8. 【强连通分量缩点】poj 1236 Network of Schools

    poj.org/problem?id=1236 [题意] 给定一个有向图,求: (1)至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点 (2)至少要加多少条边,才能使得从任何一个顶点出发,都 ...

  9. Spoj-BLMIRINA Archery Training

    Mirana is an archer with superpower. Every arrow she shoots will get stronger the further it travels ...

  10. mode(BZOJ 2456)

    Description 给你一个n个数的数列,其中某个数出现了超过n div 2次即众数,请你找出那个数. Input 第1行一个正整数n.第2行n个正整数用空格隔开. Output 一行一个正整数表 ...