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)编写的.成对出 ...
随机推荐
- Ubuntu 16.04安装unrar解压RAR文件
除了7zip:http://www.cnblogs.com/EasonJim/p/7124306.html之外,还可以安装unrar进行解压RAR文件. 安装 sudo apt-get install ...
- json序列化后的是字符串,不是二进制。是字符串!!!确定不是二进制!!!
1.现有一个自定义对象需要储存到sql数据库中去.这个对象里面属性很多,甚至包含一些元素量打到几十万的List集合属性.本人试着使用JSON序列化这个对象,储存到数据库,报maxjsonlength超 ...
- socker地址API
大端字节序是指一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处.小端字节序是指整数的高位字节存储在内存的高地址处,低位字节则存储在内存的低地址处. 现代pc大多采用小端字节序,故小 ...
- DHCP Snooping的实现
DHCP Snooping的实现 DHCP Snooping的实现 主要作用:1.防止在动态获得IP地址的网络环境中用户手动配置PC的IP地址;2.防止A用户的PC静态配置的IP地址顶掉B用户PC动态 ...
- Office 佳能MP259打印EXCEL线条歪曲,字迹模糊怎么办
这大概是墨盒的缘故,判断方法很简单,随便找一个文档,点击打印,属性 在维护选项卡中把清洗和打印头对齐做一遍(一般字迹模糊可以通过清洗解决,线条歪曲可以通过打印头对齐解决),如果你打印的结果是纸张边 ...
- Swift开发iOS项目实战视频教程(一)---iOS真简单
本课主要介绍iOS项目的创建.第一个iOS项目的开发.UILabel.UIButton的使用. 假设你看完此视频还认为iOS非常难,请你来找我! 本教程摒弃枯燥的语法和知识解说,全是有趣有料的项目实战 ...
- powerShell赋权限
1.给网站赋权限 Set-SPUser –Identity “用户名” –AddPermissionLevel “参与讨论” –web “http://url” 2.给列表赋权限 $web = Get ...
- hdu 5361 2015多校联合训练赛#6 最短路
In Touch Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total ...
- CANopen——总线基本知识
1. 总线标准 2. 获取索引和子索引 2fh,2bh,23h,40h等,是不是对应cs的不同值: 主站1280h的对象字典?1280h-sub2,得到client的COB-ID值: 根据收到的m-& ...
- 关于flask的错误:ImportError: cannot import name 'Flask'
刚开始接触flask,新创建后不能运行,报错如下图: 导致该错误有两种可能,没安装flask:文件名为flask. 可尝试如下两种方法解决: 方法一:若没安装过flask,则进入cmd,输入pip i ...