ZetCode

GTK+ 介绍

最后修改于 2023 年 10 月 18 日

这是一个 GTK+ 编程入门教程。本教程使用 C 编程语言编写。它已在 Linux 上创建和测试。GTK+ 编程教程适合初学者和中级程序员。本教程涵盖 GTK+ 2。

GTK+

GTK+ 是一个用于创建图形用户界面的库。该库用 C 编程语言创建。GTK+ 库也被称为 GIMP 工具包。最初,该库是在开发 GIMP 图像处理程序时创建的。从那时起,GTK+ 成为 Linux 和 BSD Unix 上最受欢迎的工具包之一。如今,开源世界中的大多数 GUI 软件都是用 Qt 或 GTK+ 创建的。GTK+ 是一个面向对象的应用程序编程接口。面向对象系统是用 Glib 对象系统创建的,Glib 对象系统是 GTK+ 库的基础。GObject 还允许为各种其他编程语言创建语言绑定。语言绑定适用于 C++、Python、Perl、Java、C# 和其他编程语言。

GTK+ 本身依赖于以下库

Glib 是一个通用实用程序库。它提供了各种数据类型、字符串实用程序,支持错误报告、消息日志记录、线程操作以及其他有用的编程功能。Pango 是一个支持国际化的库。ATK 是可访问性工具包;它提供了帮助身体残疾人士使用计算机的工具。GDK 是底层图形系统提供的低级绘图和窗口功能的包装器。在 Linux 上,GDK 位于 X Server 和 GTK+ 库之间。它处理基本渲染,例如绘制图元、光栅图形、光标、字体以及窗口事件和拖放功能。GdkPixbuf 库是一个用于图像加载和像素缓冲区操作的工具包。Cairo 是一个用于创建 2D 矢量图形的库。自 2.8 版以来,它已包含在 GTK+ 中。

Gnome 和 XFce 桌面环境是使用 GTK+ 库创建的。SWT 和 wxWidgets 是使用 GTK+ 的知名编程框架。使用 GTK+ 的主要软件应用程序包括 Firefox 或 Inkscape。

编译 GTK+ 应用程序

要编译 GTK+ 应用程序,我们有一个方便的工具叫做 pkg-configpgk-config 返回有关已安装库的元数据。如果我们想使用一个特定的库,它将为我们提供必要的依赖库和我们需要包含的文件。pkg-config 程序从特殊的元数据文件中检索有关包的信息。

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

此行编译一个基本程序。源代码由一个文件组成 — simple.c

$ pkg-config --cflags gtk+-2.0 | xargs -n3
-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include
-I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0
-I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2
-I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1
-I/usr/include/libpng12 -I/usr/include/harfbuzz

--cflags 参数打印编译 GTK+ 程序所需的预处理器和编译标志,包括所有依赖项的标志。

$ pkg-config --libs gtk+-2.0 | xargs -n5
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0
-lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig
-lgobject-2.0 -lglib-2.0 -lfreetype

--libs 参数列出必要的库。

版本

以下程序打印 GTK+ 和 Glib 库的版本。

version.c
#include <gtk/gtk.h>

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

    gtk_init(&argc, &argv);

    g_printf("GTK+ version: %d.%d.%d\n", gtk_major_version, 
        gtk_minor_version, gtk_micro_version);
    g_printf("Glib version: %d.%d.%d\n", glib_major_version,
        glib_minor_version, glib_micro_version);    
        
    return 0;
}

该程序使用内置常量。

$ ./version 
GTK+ version: 2.24.23
Glib version: 2.40.2

来源

这是 GTK+ 库的介绍。