GTK+ 简介
这是 GTK+ 编程入门教程。 本教程使用 C 编程语言编写。 它已在 Linux 上创建并经过测试。 GTK+ 编程教程适合新手和中级程序员。 本教程介绍了 GTK+ 2。
GTK+
GTK+ 是用于创建图形用户界面的库。 该库是用 C 编程语言创建的。 GTK+ 库也称为 GIMP 工具箱。 最初,该库是在开发 GIMP 图像处理器时创建的。 从那时起,GTK+ 成为 Linux 和 BSD Unix 下最受欢迎的工具包之一。 如今,开源世界中的大多数 GUI 软件都是在 Qt 或 GTK+ 中创建的。 GTK+ 是一个面向对象的应用编程接口。 面向对象的系统是使用 Glib 对象系统创建的,该系统是 GTK+ 库的基础。GObject
还可以为各种其他编程语言创建语言绑定。 存在用于 C++ ,Python,Perl,Java,C# 和其他编程语言的语言绑定。
GTK+ 本身取决于以下库:
- Glib
- Pango
- ATK
- GDK
- GdkPixbuf
- Cario
Glib 是通用工具库。 它提供各种数据类型,字符串工具,启用错误报告,消息日志记录,使用线程以及其他有用的编程功能。Pango 是一个实现国际化的库。ATK 是可访问性工具包; 它提供了一些工具,可以帮助残障人士使用计算机。GDK 是基础图形系统提供的低级绘图和窗口功能的包装。 在 Linux 上,GDK 位于 X Server 和 GTK+ 库之间。 它处理基本的渲染,例如图形基元,光栅图形,光标,字体以及窗口事件和拖放功能。GdkPixbuf 库是用于图像加载和像素缓冲区操作的工具包。Cario 是用于创建 2D 向量图形的库。 自 2.8 版起,它已包含在 GTK+ 中。
Gnome 和 XFce 桌面环境已使用 GTK+ 库创建。 SWT 和 wxWidgets 是使用 GTK+ 的众所周知的编程框架。 使用 GTK+ 的著名软件应用包括 Firefox 或 Inkscape。
编译 GTK+ 应用
要编译 GTK+ 应用,我们有一个方便的工具pkg-config
。 pgk-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
这是version
程序的输出。
数据来源
这是 GTK+ 库的简介。