GTK+初识-高大上的图形接口

GTK+初识---高大上的图形接口

GTK+,或者是叫做GIMP工具组件,是一套创建图形用户接口的多平台组件.GTK+提供了一套完整的组件集,同时他不仅仅适用于小型工具开发,同样也适用于一个完整的项目套件.

像我们熟悉的gnome桌面,各个系统平台上的GIMP图像处理软件,VMWare工作站,以及OS X和Windows vista上的gedit文本编辑器等都是使用GTK创建的.

GTK+是使用C语言写的,但是已经被设计成支持多语言的框架了,例如在Perl和python等中使用GTK+可以快速的创建桌面应用程序.同时,他是使用GObject来实现的,GObject是一个为C所开发的一个面向对象的框架,所以GTK+也是支持面向对象编程的.GTK+是事件驱动的.这套组建对于事件的监听例如对一个按钮的点击,会将事件传递到你的应用程序中去响应.

下面我们搭建一下我们的开发环境:
首先我们需要了解的是,GTK+自身是依赖于下面的库的:

​1:Glib
​2:pangp
​3:ATK
​4:GDK
​5:GdkPixbuf
​6:Cairo

下面我们一一了解一下这些函数库:

Glib是一个常用的工具函数库.他提供了一些数据类型,字符串工具,错误通知,消息队列和线程.pango是一种函数库,用来实现国际化和本地化的功能.ATK是一种工具函数包,她提供了创建快捷键的功能.GDK是一种函数库,他为整个GTK+函数图形系统提供了一些底层的”图形实现”和”窗口实现”的方法.GDKPixbuf函数库用于加载图像和维护图像”缓存”. Cairo是用于制作二维图像的函数库.

首先我们需要在我们的ubuntu系统中安装GTK+函数库:

sudo apt-get install gtk2 gtk2-devel gtk2-devel-docs

其次,我们需要知道,当我们写完我们的程序之后,应该如何编译我们的程序,那肯定好说,直接使用gcc来编译就行了.是的,是使用gcc来进行编译,但是编译的过程中所需要的函数库的位置我们应该如何指定呢?下面就会使用到我们的一款工具”pkg-config”,该工具可以提供各种安装函数库的位置.假如我们要编译我们的hello.c程序,我们就需要这样写:

gcc -o hello hello.c `pkg-config --libs --cflags gtk+2.0`

注意,最后使用的是反引用号将pkg-config引起的,反引用号就是你的键盘上的在数字”1”左面的那个按键.下面我们来写一个hello World程序:

hello.c

#include <gtk/gtk.h>

/*
 * 最简单的GTK桌面程序
 * 仅仅就是生成一个窗口的小小程序
 */
int main(int argc,char *argv[]){

    GtkWidget *window;  //
    gtk_init(&argc,&argv);  // 初始化整个GTK+程序,是每一个GTK+程序必不可少的部分

    /*
     * 生成一个构件 -- GtkWindow,这个窗体的种类
     * 是GTK_WINDOW_TOPLEVEL,toplevel窗口拥有一个
     * 标题栏和边框
     */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);  
    gtk_widget_show(window);    //必不可少的,显示构件

    gtk_main();     //进入主循环,等待事件的发生

    return 0;
}

下面我们使用下面的代码来进行编译:

gcc -o hello helloc. `pkg-config --libs --cflags gtk+2.0`

下面就是运行之后的结果:

GTK+初识-高大上的图形接口