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
- GdkPixbuf
- Cairo
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-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 库的版本。
#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+ 库的介绍。