FANDOM


GTK+(原 GIMP工具箱)是跨平台的部件工具箱,用于创建图形用户界面。以GNU宽通用公共许可证授权,允许自由软件专有软件使用。GTK+和QtWaylandX11窗口系统中最流行的工具箱。

软件架构编辑

GTK+库包含一组图形控件元素(部件),在3.13.3版本中包含203种活跃的部件和37种已废弃的部件。GTK+是用C语言编写的面向对象的部件工具箱;它使用GLib的对象系统GObject来实现面向对象。虽然GTK+主要针对基于X11Wayland的窗口系统,但它也适用于其他平台,包括Microsoft Windows(使用Windows API接口)和Mac OS X(使用Quartz接口)。还有一个HTML5后端,称为Broadway。

GTK+可以通过配置来更改绘制的部件的外观,这是使用不同的显示引擎来完成的。存在几种显示引擎,用来模拟所用平台上的原生部件的外观。

从2005年发布的2.8版本开始,GTK+开始过渡到使用Cairo来渲染大部分图形控件元素。自从GTK+ 3.0版本开始,所有的渲染都使用Cario来完成。

开发编辑

GTK+主要是由GNOME项目开发的,GNOME项目还开发了GNOME开发平台和GNOME桌面环境。

GTK+开发的管理很松散。讨论主要在一些公共邮件列表上进行。GNOME的开发者和用户聚集在GUADEC年度会议上讨论GNOME目前的状态和未来的方向。GNOME包含了freedesktop.org的标准和程序,以使其更好地与其他桌面进行互操作。

GTK+主要使用C语言编写,并提供了多种语言绑定

在2016年9月1日,GTK开发博客上的一篇文章指出了GTK+未来的版本号计划,以及其他一些事项。2016年秋季的GTK+ 3.22版本将会是最后一个3.x版本。之后,所有的资源都会流向GTK+ 4开发系列,使用3.90、3.92等版本名称。众多仍在使用GTK+ 2.x的应用程序是否会被移植到3.22,只有未来才会知道。

示例编辑

以下代码是一个C语言编写的图形化GTK+ hello-world程序。该程序包含一个标题为“Hello, world!”的窗口,和一个有着类似文本的标签。

#include <gtk/gtk.h>

int main (int argc, char *argv[])
{
    GtkWidget *window;
    GtkWidget *label;

    gtk_init(&argc, &argv);

    /* 创建主窗口(顶级窗口) */
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    /* 设置窗口标题 */
    gtk_window_set_title(GTK_WINDOW(window), "Hello, world!");

    /* 使窗口居中 */
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    /* 设置窗口的默认大小 */
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 100);

    /*
    ** 将窗口的destroy信号映射到gtk_main_quit;
    ** 当窗口即将被销毁时,我们会得到通知
    ** 并且停止GTK+主循环,返回0
    */
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    /*
    ** 将变量“label”赋值为新的GTK标签,
    ** 标签中包含文本“Hello, world!”
    */
    label = gtk_label_new("Hello, world!");

    /* 将标签绘制在主窗口上 */
    gtk_container_add(GTK_CONTAINER(window), label);

    /* 确保每个部件(窗口和标签)都可见 */
    gtk_widget_show_all(window);

    /*
    ** 启动主循环,并且什么都不做(阻塞)
    ** 直到应用程序被关闭
    */
    gtk_main();

    return 0;
}

debian或其衍生版本中,需要首先安装库:

$ sudo apt-get install libgtk-3-dev

Unix shell中使用pkg-config,这段代码可以使用如下命令进行编译(假设以上源代码的文件名为“helloworld.c”):

$ cc -Wall helloworld.c -o helloworld $(pkg-config --cflags --libs gtk+-3.0)

调用程序

$ ./helloworld

您使用了广告屏蔽软件!


Wikia通过广告运营为用户提供免费的服务。我们对用户通过嵌入广告屏蔽软件访问网站进行了使用调整。

如果您使用了广告屏蔽软件,将无法使用我们的服务。请您移除广告屏蔽软件,以确保页面正常加载。

查看其他FANDOM

随机维基