第一个GTK程序例子:

#include <stdio.h>

#include <gtk/gtk.h>

int main(int argc, char *argv[])

{

gtk_init(NULL,NULL);                       //初始化GTK

GtkWindow *window =gtk_window_new(GTK_WINDOW_TOPLEVEL);   //新建一个window窗口

gtk_window_set_title(window,"窗口标题");           //设置窗口标题

g_signal_connect(window,"destroy",gtk_main_quit,0);      //设置窗口的"destroy"信号(事件)的处理函数“gtk_main_quit()”

gtk_widget_show(window);                   //显示窗口

gtk_main();                          //程序阻塞

return 0;

}


一、常用方法

//widget操作函数

  void gtk_widget_show(widget);

  void gtk_widget_hide(widget);

  void gtk_widget_set_sensitive(widget,sensitive);

  void gtk_widget_set_size_request(widget,width,height);

//window操作函数

  gtk_window_set_resizable(window,resizable);

  gtk_window_set_position(window,GTK_WIN_POS_CENTER_ALWAYS);

  gtk_window_maximize(window);

  gtk_container_add(container,widget);    //将widget装到container中

  gtk_AAA_get_BBB();

  gtk_AAA_set_BBB();

  //gtk_widget_set_title(widget,"标题");


二、GtkBox(盒子)布局

//创建盒子

  GtkBox *box1=gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);

  //GtkBox *box1=gtk_box_new(GTK_ORIENTATION_VERTICAL,0);

  gtk_container_add(window,box1);

  gtk_widget_show(box1);

//添加按钮1

  GtkButton *btn1=gtk_button_new();

  gtk_button_set_label(btn1,"按钮1");

  gtk_box_pack_start(box1,btn1,FALSE,FALSE,0);

  gtk_widget_show(btn1);

//添加按钮2

  GtkButton *btn2=gtk_button_new();

  gtk_button_set_label(btn2,"按钮2");

  gtk_box_pack_start(box1,btn2,FALSE,FALSE,0);

  gtk_widget_show(btn2);

//添加文本框1

  GtkEntry *entry1=gtk_entry_new();

  gtk_box_pack_start(box1,entry1,FALSE,FALSE,0);

  gtk_widget_show(entry1);


三、网格布局

/*

   GtkGrid *grid1=gtk_grid_new();

  gtk_container_add(window,grid1);

  gtk_widget_show(grid1);

  //gtk_grid_attack(GtkGrid,widget,int left,int top,int width,int height);

//添加按钮1

  GtkButton *btn1=gtk_button_new();

gtk_button_set_label(btn1,"按钮1");

   gtk_grid_attach(grid1,btn1,0,0,1,1);

   gtk_widget_show(btn1);

//添加按钮2

  GtkButton *btn2=gtk_button_new();

  gtk_button_set_label(btn2,"按钮2");

  gtk_grid_attach(grid1,btn2,1,0,1,1);

  gtk_widget_show(btn2);

//添加按钮3

  GtkButton *btn3=gtk_button_new();

  gtk_button_set_label(btn3,"按钮3");

  gtk_grid_attach(grid1,btn3,0,1,2,2);

  gtk_widget_show(btn3);

*/

附:以上内容为本人学习了杨中科老师的《C语言也能干大事(第三版)》的教学视频之后,对所学的内容进行的总结。

Gtk基础学习总结(一)的更多相关文章

  1. Gtk基础学习总结(二)

    一.信号.事件 void g_signal_connect(instance,char* signalName,callback,gpointerobject); //instance:gtk控件 i ...

  2. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  3. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  4. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  5. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  6. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

  7. python入门到精通[二]:基础学习(1)

    摘要:Python基础学习: 注释.字符串操作.用户交互.流程控制.导入模块.文件操作.目录操作. 上一节讲了分别在windows下和linux下的环境配置,这节以linux为例学习基本语法.代码部分 ...

  8. CSS零基础学习笔记.

    酸菜记 之 CSS的零基础. 这篇是我自己从零基础学习CSS的笔记加理解总结归纳的,如有不对的地方,请留言指教, 学前了解: CSS中字母是不分大小写的; CSS文件可以使用在各种程序文件中(如:PH ...

  9. Yaf零基础学习总结5-Yaf类的自动加载

    Yaf零基础学习总结5-Yaf类的自动加载 框架的一个重要功能就是类的自动加载了,在第一个demo的时候我们就约定自己的项目的目录结构,框架就基于这个目录结构来自动加载需要的类文件. Yaf在自启动的 ...

随机推荐

  1. 完全用nosql轻松打造千万级数据量的微博系统

    其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量也并不是一千万条微博信息而已,而是千万级订阅关系之间发布.在看 我这篇文章之前,大多数人都看过sina的杨卫华大牛的微 ...

  2. maya布料预设解析

    今天做了一天布料.数值都是自己在那调整.结果发现maya自带预设,基本有些都不用调整,直接预设,效果非常不错.累死累活半天. 下来看看  预设 解析吧 ncloth新布料系统是 Maya 8.0 后新 ...

  3. livego

    1.安装golang开发环境 https://www.cnblogs.com/eczhou/p/7929693.html 2.livego源码及说明文档 https://github.com/zhou ...

  4. PAT 1037 Magic Coupon[dp]

    1037 Magic Coupon(25 分) The magic shop in Mars is offering some magic coupons. Each coupon has an in ...

  5. css 自定义滚动条

    我遇到的场景: 对于iframe窗口,自带滚动条是整个窗口的大小.有时需要顶部或底部固定,则滚动条不应该触碰到顶部或底部. 那么首先打开iframe时应该去掉滚动条 scrolling="n ...

  6. android上传图片、视频、文件,服务端使用wcf接收

    最近一直在搞android上传图片.视频.文件,服务端使用wcf接收,本文对调试中的遇到的问题进行记录. 首先android上传一些小图片是比较容易的一天下来差不多就能调试出来,但是上传一些大的文件时 ...

  7. mysql锁机制之间隙锁(Next-Key锁)(五)

    间隙锁(Next-Key锁) 当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的 索引项加锁:对于键值在条件范围内但并不存在的记录,叫做“间隙(GA ...

  8. Mac OS OpenVpN 连接设置(转)

    下文介绍Mac OS连接使用OpenVPN方法教程,使用的软件是免费开源的Tunnelblick,当然也有其它连接软件,比如Viscosity,不过这个是付费的,还是前面的用的多. 1.下载安装Tun ...

  9. 联想(Lenovo)小新310经典版进bios方法

    1,找到novo按钮. 2,在关机的状态下桶一下小孔,不用任何操作,电脑进入bios选择界面.

  10. templates页面超链接访问Controller方法

    <h3>部署列表:</h3> <table border="1px" cellspacing="0px" width=" ...