Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1951345
  • 博文数量: 185
  • 博客积分: 10707
  • 博客等级: 上将
  • 技术积分: 1777
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-19 17:31
文章分类

全部博文(185)

文章存档

2014年(1)

2012年(6)

2011年(27)

2010年(13)

2009年(75)

2008年(63)

分类:

2009-02-27 10:07:40

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+帮助文档.
阅读(2014) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~