C语言学习(2)-GTK布局
首先了解下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布局的更多相关文章
- 5332盛照宗 如何获取新技能+c语言学习调查
如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...
- 20155332 如何获取新技能+c语言学习调查
如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...
- C语言学习 第八次作业总结
本次作业其实没有新的内容,主要就是复习上一次的一维数组的相关内容.冯老师布置了5道题目,其中涉及到一些比较简单的排序或者是查找的方法.因为数据很少,所以直接使用for循环遍历就可以了. 关于本次作业, ...
- C语言学习 第七次作业总结
C语言学习 第七次作业总结 数组可以分为数组和多下标数组(在传统的国内C语言书本中,将其称为二/多维数组). 数组名称 在之前的课程中,大家应该都有印象,对于int a这样的定义,会为变量 a 声明一 ...
- 技能收获与C语言学习
你有什么技能比大多人(超过90%以上)更好? 我会的东西很多,喜欢的东西太多,但是很遗憾广而不专,会而不精.学了很多东西我都是为了娱乐,因为以前我们那里过于强调学习,很多爱好也都被扼杀在摇篮里.我觉得 ...
- 一份关于Swift语言学习资源的整理文件
一份关于Swift语言学习资源的整理文件 周银辉 在这里下载 https://github.com/ipader/SwiftGuide
- go语言学习笔记
Go语言学习基本类型Bool 取值范围:true,false (不可以用数字代替)Int/uint 根据平台可能为32或64位int8/uint8 长度:1字节 取值范围-128~127/0~255b ...
- 20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标
自己较强的技能获取经验. 1:实话实说我自己是没有哪个技能可以超过90%的人的,只有自认为做的还可以的一些事情,例如打篮球,office软件的应用,一百米跑.至于其他方面就是很平庸了. 2:经验主要有 ...
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
随机推荐
- Jquery那些事
Jquery选择器介绍: 我们可以通过Jquery选择器从网页文档中找到我们需要的DOM节点: 主要还时看文档!! (1)基本选择器 属性id 类别class 文档标签 (2)属性选 ...
- Ajax核心知识(2)
对于Ajax核心的东西需要在进行总结提炼一下: xmlHttp对象. 方法:xml.responseText获取后台传递到前台的数据,经常性的使用var object=xml.responseText ...
- Ubuntu 16.04桌面打开终端自动进去桌面文件夹
sudo vim ~/.bashrc #在最后添加如下内容,注意,由于我的系统是中文版本,所以文件夹名称为“桌面”,如果为英文版的,那么需要更改为“Desktop” if [[ $PWD == $(r ...
- Django学习系列之路由系统
一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django ...
- 魔兽争霸3 冰封王座 w3g文件如何打开
w3g文件怎么样才能看??? 满意回答 检举|2011-11-10 11:23 你应该是玩魔兽争霸的吧,如果是就找到你魔兽安装文件夹里面有个replay的文件夹,把w3g格式的文件放入该文件夹,再进入 ...
- Linux下,PHP的SESSION不起作用的问题
改动SESSION目录的权限就能够了. 先找到SESSION目录, 然后 chmod -R 777 /var/lib/php/session 假设没有此目录,则新建此目录 mkdir -R 777 / ...
- js美化压缩工具Mark一下
jscompress https://www.jscompress.cn/
- 字符串匹配之KMP算法(续)---还原next数组
相信通过今天的文章,你会对KMP的认识更加深入一层,不止停留在知道怎样计算的层面上了,废话不多说,開始. 通过前面的第一篇文章,知道了怎么求next数组,相信非常多喜欢刨根问底的人就会问,我依照你的做 ...
- 秒懂C#通过Emit动态生成代码 C#使用Emit构造拦截器动态代理类
秒懂C#通过Emit动态生成代码 首先需要声明一个程序集名称, 1 // specify a new assembly name 2 var assemblyName = new Assembly ...
- iOS方法重写
在O-C中子类可以继承父类的方法 ,而不需要从新编写相同的方法,但是有有时候子类并不想原封不动的继承父类的方法,而且是想做一些修改,这就采用啦方法的重写,方法从写有叫做方法覆盖,若子类的中的方法与父类 ...