GTK编程初谈

转载 2011年01月13日 16:21:00

  GTK编程初谈 

    GTK是一个跨平台的GUI开发库, 它是用C语言以OO的方式(俗称面向对象C, 又称OO-C)开发的. 只要是有一定C语言和GUI开发基础, 用GTK是一件很简单的事.
1. 安装与配置:
由于我使用的是Ubuntu Linux, 重点只介绍Ubuntu下的GTK开发库安装方法:
sudo apt-get install vim-full                 ;我是vi的忠实用户, 当然你也可以选择emacs或者其他编辑器
sudo apt-get install build-essential       ;安装编译环境, 包括gcc/gdb/make等工具
sudo apt-get install gnome-core-devel  ;安装gtk和glib的开发库
sudo apt-get install pkg-config             ;这是个flag和lib查找工具, 会在编译时自动找到头文件和库的位置
sudo apt-get install dev-help                ;安装文档查看工具dev-help
sudo apt-get install libglib2.0-doc libgtk2.0-doc ;安装gtk和glib的开发文档

2. 实例:
#include  < gtk / gtk.h >

int  main( int  argc,  char   * argv[])
{
    
/*  A window and a button  */
    GtkWidget 
* win,  * btn;

    
/*  Initialize GTK  */
    gtk_init(
& argc,  & argv);

    
/*  New a window and a button  */
    win 
=  gtk_window_new(GTK_WINDOW_TOPLEVEL);
    btn 
=  gtk_button_new_with_label( " Close yourself " );
    
    
/*  Add button to window container  */
    gtk_container_add(GTK_CONTAINER(win), btn);

    
/*  Connect "close" and button to quit op  */
    g_signal_connect(win, 
" destroy " , G_CALLBACK(gtk_main_quit), NULL);
    g_signal_connect(btn, 
" clicked " , G_CALLBACK(gtk_main_quit), NULL);

    
/*  Show all in the window  */
    gtk_widget_show_all(win);

    
/*  Main loop, wait for signals  */
    gtk_main();

    
return   0 ;
}
上面的程序为main.c, 它所完成的功能就是创建一个窗口(window), 在窗口中添加一个按钮(button), 点击这个button或者是窗口的关闭按钮, 就会实现窗口的关闭, 并使程序结束.
这几行代码很简单, 主要有几个关键:
  • GtkWidget: 创建一个窗口和一个按钮. GTK中的控件都要用GtkWidget类型创建.
  • gtk_init(): 对程序用命令行参数进行初始化.
  • gtk_xxx_new(): 新建xxx类型的控件
  • gtk_container_add(): 把控件添加到container容器中, 在这里是把按钮添加到窗口中.
  • g_signal_connect(): 把GTK控件对应的操作信号, 连接到CALLBACK函数上.
  • gtk_widget_show_all(): 显示窗口.
  • gtk_main(): 开始main loop, 等待信号触发事件.

3. 编译:
我用一个makefile来展示编译命令.




# Target, compiler and objects.
EXEC   = test
CC     = gcc
OBJ    = main.o

# Use for compile.
CFLAGS = `pkg-config --cflags gtk+-2.0`
# Use for link.
CLIBS  = `pkg-config --libs gtk+-2.0`

$(EXEC): $(OBJ)
    $(CC) -o $@ $^ $(CLIBS)

main.o: main.c
    $(CC) -c $< $(CFLAGS)

clean:
    rm $(EXEC) *.o





这里于普通的makefile不同的地方是CFLAGS和CLIBS两个变量, 分别用于编译和链接.
用`......`引用pkg-config实现参数的flags.
在编译时只需要在终端下执行make命令, 就会在目录下生成test可执行的elf文件.

4. 总结:
    GTK编程就像上面举的例子一样, 很简单. 具体的函数使用方法请参见dev-help中的gtk+帮助文档.

GTK编程初谈

GTK编程初谈 分类: 应用编程2007-08-22 22:25 6119人阅读 评论(8) 收藏 举报 gtk编程callbackmakefilesignalbutton ...
  • q1070292175
  • q1070292175
  • 2013年11月09日 11:56
  • 613

转GTK编程初谈

这几天在看GTK编程,都是在window下用VS2008写demo。今天没事在ubuntu上试试,找了篇文章了解如何安装必要的软件和库。感谢这位XD的分享。 ---------------------...
  • voodoo82
  • voodoo82
  • 2009年08月02日 13:25
  • 439

从虚拟化谈起(一)

虚拟化技术指将一台计算机虚拟为多台虚拟计算机(简称虚拟机),即一台计算机上同时运行多个虚拟机。通过虚拟化层(又称为虚拟机监控器,VMM)的模拟,虚拟机的操作系统仍然认为自己是独占一个系统,因此虚拟机可...
  • wsfdl
  • wsfdl
  • 2014年03月20日 00:39
  • 2374

GTK编程基础---入门篇(helloworld)

下面来介绍GTK编程入门,你的第一个程序hellowoeld。直接通过程序来讲解吧。 /*File:helloworld.c *Date:2013-11-23 *Author:sjin *Mai...
  • jsh13417
  • jsh13417
  • 2013年11月23日 16:17
  • 5619

《GTK+/GNOME程序设计》 笔记(一) GTK+

GTK+简介GTK 最初为GIMP(一个图像处理软件,类似Photoshop)的工具包 后来GTK重写为面向对象的GTK+GTK+ 并非是用C++写的,而是用C语言,所谓的面向对象是用C语言模拟的。...
  • yjwx0018
  • yjwx0018
  • 2016年08月31日 23:07
  • 1643

Gtk+国际化编程

抄别人的, 留在这里学习用。GTK+采用具有OO特色的C语言开发框架,这使它在开发GUI应用程序能和操作系统紧密结合,同时具有很大简洁性,其中的很多 代码只要简单的复制和更改即可完成,只用一个C源代码...
  • Harrison_zhu
  • Harrison_zhu
  • 2007年11月28日 14:45
  • 1151

GTK+浅谈之十三网络编程

一、简介         网络编程是Linux功能的强项,Gtk+2.0结合Linux系统的网络编程编写服务器和客户端。 二、详解 1、简单的ECHO程序        套接字...
  • taiyang1987912
  • taiyang1987912
  • 2015年10月09日 17:54
  • 1639

Linux下的GTK图形界面编程

GTK(GIMP Toolkit)是一个图形用户编程的接口工具。它注册完全免费,所以用来开发自由软件或商业软件都不需要花费什么。现在很多Linux集成系统都已经将GTK1.2版本打包进去了。包括Red...
  • linuxchyu
  • linuxchyu
  • 2013年11月27日 13:58
  • 1633

gtk 应用程序使用内嵌浏览器 gtkmozembed

GTK程序中内嵌浏览器 我们使用的是gtkmozembed它由xulrunner提供,这两个东西到底是什么意思,我也不知道。 环境搭建: 用的系统是ubuntu 10.04 sudo...
  • oShaPoLang
  • oShaPoLang
  • 2013年12月04日 14:15
  • 1344

用Cairo在GTK+上绘图

Cairo是跨平台的2D图形库,支持多种后端,支持输出PostScript、PDF和SVG等。 比较有名的例子是,从GTK+2.8开始,GTK+使用Cairo进行图形绘制,另外一个就是Mozilla...
  • uunubt
  • uunubt
  • 2011年01月11日 16:13
  • 1084
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GTK编程初谈
举报原因:
原因补充:

(最多只允许输入30个字)