首先了解下gtk中函数的定义格式:

记住下面几个格式看,下面的代码

声明变量:GtkAbc*abc=gtk_abc_new()声明控件;

赋值:gtk_abc_set_label(controlName,value);

添加到父容器:gtk_container_add(controFather,controlChildl);

显示控件:gtk_widget_show(controlName);

一般默认值:gtk_box_pack_start()的后三个 值,一般为FALSE,FALSE,0

 

1.盒子布局(垂直和水平)

 

#include <stdio.h>
#include<gtk/gtk.h>
int main(int argc, char *argv[])
{
//初始化gtk
gtk_init(NULL,NULL);
//定义一个指向window的指针
GtkWindow*window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
//窗体关闭之后执行
g_signal_connect(window,"destroy",gtk_main_quit,NULL);
//设置标题
gtk_window_set_title(window,"标题");
//每个被添加的控件都要有show
gtk_widget_show(window); //添加一个box,使用垂直布局
//GTK_ORIENTATION_HORIZONTAL为水平布局
GtkBox*box=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);
gtk_container_add(window,box);
gtk_widget_show(box); GtkLabel*lb1=gtk_label_new("盒子布局");
gtk_container_add(box,lb1);
gtk_box_pack_start(box,lb1,FALSE,FALSE,0);
gtk_widget_show(lb1); GtkEntry*entry1=gtk_entry_new();
gtk_container_add(box,entry1);
gtk_box_pack_start(box,entry1,FALSE,FALSE,0);
gtk_widget_show(entry1); GtkButton*btn1=gtk_button_new();
gtk_button_set_label(btn1,"按钮一");
gtk_container_add(box,btn1);
gtk_box_pack_start(box,btn1,FALSE,FALSE,0);
gtk_widget_show(btn1); gtk_main(); return 0;
}

运行结果如下

2.网格布局

原理:

gtk_grid_attach(grid1,btn1,1,2,3,4):

grid1表示父容器;

btn1表示被添加的控件;

1表示该控件距离左边一个网格;

2表示该控件距离上边两个网格;

3表示该控件占据3个网格的宽度;

4表示该控件占据4个网格的高度;

记住几句话:

1.网格布局的关键词是Grid

2.gtk_button_set_label()表示赋值,赋值用 set_label()

3.gtk_container_add()要在gtk_grid_attach()之后写

4.所有新创建的控件,都要有show的方法

5.如果涉及到布局,都要有附加到布局的方法

#include <stdio.h>
#include<gtk/gtk.h>
int main(int argc, char *argv[])
{
gtk_init(NULL,NULL);
GtkWindow*window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(window,"网格布局");
g_signal_connect(window,"destroy",gtk_main_quit,NULL);
gtk_widget_show(window);
//创建一个控件变量
GtkGrid*grid1=gtk_grid_new();
//添加到父容器
gtk_container_add(window,grid1);
//显示控件
gtk_widget_show(grid1); //创建一个控件变量
GtkButton*btn1=gtk_button_new();
//为控件赋值
gtk_button_set_label(btn1,"111111");
//绑定到布局中
gtk_grid_attach(grid1,btn1,1,1,1,1);
//添加到父容器
gtk_container_add(grid1,btn1);
//显示控件
gtk_widget_show(btn1); //创建一个空间变量
GtkButton*btn2=gtk_button_new();
//给该控件赋值
gtk_button_set_label(btn2,"222222");
//绑定到布局中
gtk_grid_attach(grid1,btn2,0,0,1,1);
//添加到父容器中
gtk_container_add(grid1,btn2);
//显示控件
gtk_widget_show(btn2); gtk_main();
return 0;
}

运行结果如下图

今天,就写这么多了;我的目标并不高,希望每天写一篇,具体细节等学习深入了,再慢慢补充。

C语言学习(2)-GTK布局的更多相关文章

  1. 5332盛照宗 如何获取新技能+c语言学习调查

    如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...

  2. 20155332 如何获取新技能+c语言学习调查

    如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...

  3. C语言学习 第八次作业总结

    本次作业其实没有新的内容,主要就是复习上一次的一维数组的相关内容.冯老师布置了5道题目,其中涉及到一些比较简单的排序或者是查找的方法.因为数据很少,所以直接使用for循环遍历就可以了. 关于本次作业, ...

  4. C语言学习 第七次作业总结

    C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...

  5. 技能收获与C语言学习

    你有什么技能比大多人(超过90%以上)更好? 我会的东西很多,喜欢的东西太多,但是很遗憾广而不专,会而不精.学了很多东西我都是为了娱乐,因为以前我们那里过于强调学习,很多爱好也都被扼杀在摇篮里.我觉得 ...

  6. 一份关于Swift语言学习资源的整理文件

    一份关于Swift语言学习资源的整理文件     周银辉 在这里下载 https://github.com/ipader/SwiftGuide

  7. go语言学习笔记

    Go语言学习基本类型Bool 取值范围:true,false (不可以用数字代替)Int/uint 根据平台可能为32或64位int8/uint8 长度:1字节 取值范围-128~127/0~255b ...

  8. 20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标

    自己较强的技能获取经验. 1:实话实说我自己是没有哪个技能可以超过90%的人的,只有自认为做的还可以的一些事情,例如打篮球,office软件的应用,一百米跑.至于其他方面就是很平庸了. 2:经验主要有 ...

  9. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

随机推荐

  1. hdu5618(cdq分治求三维偏序)

    题意:给n(n<=100000)个点,坐标为(xi,yi,zi)(1<=xi,yi,zi<=100000),定义一个点A比一个点B小,当且仅当xA<=xB,yA<=yB, ...

  2. Swift可选类型(Optional)之星耀

    首先我们先看下Objective-C与Swift语言对于可选nil的不同理解: Objective-C中的nil:表示缺少一个合法的对象,是指向不存在对象的指针,对结构体.枚举等类型不起作用(会返回N ...

  3. socket 由浅入深系列------ 原理(一)

    来自:网络整理 个人觉得写一个网络应用程序没有是一件非常easy的事.其实,我们刚開始的时候总觉得的原则: 建立------>连接套接字------->接受一个连接---->发送数据 ...

  4. 使用 BenchmarkDotnet 测试代码性能 【Win10】单元测试中捕获异步方法的指定异常

    先来点题外话,清明节前把工作辞了(去 tm 的垃圾团队,各种拉帮结派.勾心斗角).这次找工作就得慢慢找了,不能急了,希望能找到个好团队,好岗位吧.顺便这段时间也算是比较闲,也能学习一下和填掉手上的坑. ...

  5. union关键字及大小端模式

    1. union 关键字 union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在 union 中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有 ...

  6. android.app.Fragment与android.support.v4.app.Fragment不一致

    在看法中用到的Fragment在类型转换的时候非常easy出现这样的问题: 对照代码: class MyFragmentPagerAdapter extends FragmentPagerAdapte ...

  7. ArcGIS中生成蜂窝多边形算法解析

    近来有不少同学.都有问我关于蜂窝多边形的问题.也就是正六边形,也就是以下这个东东: 一般的问答模式例如以下: 亲们问:ArcGIS里面那个工具能够做这个东东? 虾神答:额,没有原生的工具. 亲们问:那 ...

  8. java7中使用透明时与输入法冲突

    在Stackoverflow的这找到了答案,需要设置一下系统参数: static { System.setProperty("sun.java2d.noddraw", " ...

  9. UIColor与十六进制字符串互转

    UIColor转十六进制字符串 方法一:经过测试发现部分颜色会转化为#fffff(五个f),转化残缺导致最后颜色无法还原,不推荐使用. // UIColor转#ffffff格式的字符串 + (NSSt ...

  10. USACO Section 1.1PROB Your Ride Is Here

    题目传送门 不能提交哦   http://www.nocow.cn/index.php/Translate:USACO/ride /* ID: jusonal1 PROG: ride LANG: C+ ...