首先了解下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. P2212 [USACO14MAR]浇地Watering the Fields 洛谷

    https://www.luogu.org/problem/show?pid=2212 题目描述 Due to a lack of rain, Farmer John wants to build a ...

  2. MongoDB环境搭建教程收集(待实践)

    先收集,后续再实践. https://my.oschina.net/leezhen/blog/207262 http://www.360doc.com/content/11/0708/09/26606 ...

  3. oracle11g expdp/impdp数据库

    oracle11g导入/导出数据库 导出 .创建目录 sqlplus / as sysdba create directory dbDir as 'd:\oralce_sdic_backup\'; g ...

  4. 【CV论文阅读】An elegant solution for subspace learning

    Pre: It is MY first time to see quite elegant a solution to seek a subspace for a group of local fea ...

  5. 戴尔PowerEdge服务器RAID控制卡的配置

    示例演示环境:PowerEdge R620 + H710p Raid控制卡  + 9 x 300G 10k SAS 硬盘 H310.H710.H810的配置方法与H710P大致相同,在此不再累述. 特 ...

  6. Windows 7 SID 修改

    在安裝Windows系統時會產生一個獨一無二的SID (Security ID),它用來識別每一部主機,若在同一個區域網路內有兩部相同SID的主機,會出現警告訊息.一般而言,每次安裝時的SID不可能會 ...

  7. C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  8. 演练:我的第一个 WPF 桌面应用程序 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application

    这篇文章演示如何开发简单的 Windows Presentation Foundation (WPF) 应用程序包括元素所共有的大多数 WPF 应用程序: 可扩展应用程序标记语言 (XAML) 标记. ...

  9. 《从零開始学Swift》学习笔记(Day67)——Cocoa Touch设计模式及应用之MVC模式

    原创文章,欢迎转载.转载请注明:关东升的博客   MVC(Model-View-Controller,模型-视图-控制器)模式是相当古老的设计模式之中的一个,它最早出如今Smalltalk语言中. 如 ...

  10. Python爬虫开发【第1篇】【Requests】

    1.安装 利用 pip 安装 或者利用 easy_install 都可以完成安装: pip install requests easy_install requests 2.基本GET请求(heade ...