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

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

布局容器的主要分类:水平布局( 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. centos7中的网卡一致性命名规则、网卡重命名方法

    一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在centos5的时候,我们习惯了eth0这样的网络设备命名,在centos6发现网络设备变成了em ...

  2. Leetcode 388.文件的最长绝对路径

    文件的最长绝对路径 假设我们以下述方式将我们的文件系统抽象成一个字符串: 字符串 "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext" 表示: dir ...

  3. ubuntu14.04 Cannot find OpenSSL's <evp.h>

    Cannot find OpenSSL's <evp.h> when i configure php7 manually,i get trouble with that problem,f ...

  4. .NET重构(五):存储过程、触发器和函数的区别

    导读:在触发器的学习过程中,师傅讲了它的耦合性高,建议我能用存储过程,那到底什么是存储过程呢,自己也不是特别了解,还有就是,触发器也算是一种特殊的存储过程,为什么就不建议多用呢?接下来,就谈谈触发器. ...

  5. 【Luogu】P3865ST表模板(ST表)

    题目链接 本来准备自己yy一个倍增来着,然而一看要求O1查询就怂了. ST表模板.放上代码. #include<cstdio> #include<cstdlib> #inclu ...

  6. bzoj1584 [Usaco2009 Mar]Cleaning Up 打扫卫生 动态规划+思维

    Description 有N头奶牛,每头那牛都有一个标号Pi,1 <= Pi <= M <= N <= 40000.现在Farmer John要把这些奶牛分成若干段,定义每段的 ...

  7. COdevs 天梯 水题系列

    1203 判断浮点数是否相等 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目描述 Description 给出两个浮点数,请你判断这两个浮点数是否相等 输入 ...

  8. 16.1113 模拟考试T2

    测试题 #4 括号括号[问题描述]有一个长度为?的括号序列,以及?种不同的括号.序列的每个位置上是哪种括号是随机的,并且已知每个位置上出现每种左右括号的概率.求整个序列是一个合法的括号序列的概率.我们 ...

  9. 自定义Navigation按钮及Title

    导航栏自带的按钮,时常不能满足要求,所以深深需要进行各种定制. 写一个UINavigationItem的category // UINavigationItem+CB_ChangeButton.h 
 ...

  10. HNOI_2002 营业额统计(Splay)

    此题可以用STL的multiset解决,也可以手打一棵伸展树(Splay)来求前驱与后驱. 使用multiset: #include<iostream> #include<set&g ...