目录

Architecture

Creation

License

Languages

Community


Architecture

Over time GTK+ has been built up to be based on four libraries, also developed by the GTK+ team:

  • GLib, a low-level core library that forms the basis of GTK+. It provides data structure handling for C, portability wrappers and interfaces for such run-time functionality as an event loop, threads, dynamic loading and an object system.
  • Pango, a library for layout and rendering of text with an emphasis on internationalization. It forms the core of text and font handling for GTK+.
  • Cairo, a library for 2D graphics with support for multiple output devices (including the X Window System, Win32) while producing a consistent output on all media while taking advantage of display hardware acceleration when available.
  • ATK, a library for a set of interfaces providing accessibility. By supporting the ATK interfaces, an application or toolkit can be used with tools such as screen readers, magnifiers, and alternative input devices.

Creation

GTK+ was initially developed for and used by the GIMP, the GNU Image Manipulation Program. It is called the "The GIMP ToolKit" so that the origins of the project are remembered. Today it is more commonly known as GTK+ for short and is used by a large number of applications including the GNU project's GNOME desktop.

Peter Mattis started it all, with help from Spencer Kimball and Josh Macdonald. Marius Vollmer taught us how to make GTK+ work for language bindings. Lars Hamann and Stefan Jeske added all sorts of features to the core widgets. Carsten Haitzler designed and did the first implementation of theme support. Shawn Amundson did release management for GTK+ 1.0 and GTK+ 1.2.

License

GTK+ is free software and part of the GNU Project. However, the licensing terms for GTK+, the GNU LGPL 2.1, allow it to be used by all developers, including those developing proprietary software, without any license fees or royalties.

Languages

GTK+ has been designed from the ground up to support a range of languages, not only C/C++. Using GTK+ from languages such as Perl and Python (especially in combination with the Glade GUI builder) provides an effective method of rapid application development.

Community

GTK+ has a large development community, as can be seen by the lists of contributors in GTK+ release announcements. While there are people that can be identified as responsible for one piece of code or the other, there are also core developers who are always working on the toolkit.


什么是GDK?

GDK是标准Xlib函数调用的一个基本封装(wrapper),如果你对Xlib很熟悉,就不需要来重新熟悉绝大多数的GDK函数.所有的函数都是为了提供一个方便直观的风格来访问Xlib函数库.另外,自从GDK使用GLib,在多平台上使用时,GDK变得更加的方便和安全.

什么是GLib?

GLib库提供了一系列函数(functions)和定义(definitions),在设计GDK和GTK程序时很有用.它提供了一些标准c函数库(standard libc)的替代函数,比如malloc,但在其他的系统上使用时有很多问题.

什么是GTK+?

GTK+是一个小型而高效的控件库,具有Motif的外观和风格.实际上,它比Motif看起来好多了,它包含有基本的控件和一些很复杂的的控件:例如文件选择、控件和颜色选择控件. GTK+提供了一些独特的特性,(至少,我知道其他的控件库不提供他们),例如,按钮不提供标签,它包含了一个子控件,在很多的时候是一个标签,但是,这个子控件也可以是一个映射,图像或者任何其他的程序员想要的集合.在整个的库中,你随处可见这种伸缩性.

Gnome的开发基础结构是围绕一组函数库的,所有的内容都是用可移植的ANSI C语言写成的,可以用于所有类UNIX系统,与图形相关的函数库依赖于X Window系统。 Gnome函数库是最高层的。GTK+由两部分组成,GTK和GDK。 GTK层为C语言提供了一个对象模型,并为UI工具包提供了最基本的widget,它是上层GUI派生的基础。 GTK是依赖于GDK的,GDK是Xlib的一个底层包装,Xlib库直接与X服务器对话。 除了Xlib以外的任何部分都是基于GLib的,它是一个有用的C函数库,提供了很多实用程序和可移植的功能以及一组容易被C语言使用的容器。

一个Gnome程序使用多个库组成的层次结构: 
       Gnome库在最高层,包括帮助例程,类和特殊的widget,并为应用程序提供一个基础架构。
       第二层是GTK,它是GTK+库的一部分。这个库提供了基本的工具包和widget来创建GUI应用程序。大多数GUI是直接用GTK编写的。GTK同时为Gnome库提供了一个功能强大的对象系统。 
       再下一层是GDK,它简单的对X函数库进行了包装,只有在我们进行特殊绘画或设置窗口的特殊属性的时候才会用到它.  
       最下面一层是Glib,它是C的一个实用程序库,包括可移植性和一些实用程序功能,以及一些容器类,例如:链表,可变数组,变长字符串,HASH(貌似是哈西表),缓存,一个事件循环和其他有用的结构

--------------------- 
作者:wtz1985 
来源:CSDN 
原文:https://blog.csdn.net/wtz1985/article/details/2915017 
版权声明:本文为博主原创文章,转载请附上博文链接!

Overview of GTK+ and its Libraries相关推荐

  1. GTK+ and Glade3 GUI Programming Tutorial--中文系列

    原文链接: Micah Carrick www.micahcarrick.com/12-24-2007/gtk -glade-tutorial -part -1.html Part 1 Quick O ...

  2. jquery下载教程

    jquery下载教程 建议使用google浏览器下载,不建议使用IE浏览器(没有办法生成.js文件,只能复制粘贴) 下载网址 https://docs.microsoft.com/en-us/aspn ...

  3. 前端绘制绘制图表_绘制图表(第2页):JavaScript图表库的比较

    前端绘制绘制图表 by Mandi Cai 蔡曼迪 绘制图表(第2页):JavaScript图表库的比较 (Charting the waters (pt. 2): a comparison of J ...

  4. 气流与路易吉,阿戈,MLFlow,KubeFlow

    任务编排工具和工作流程 (Task orchestration tools and workflows) Recently there's been an explosion of new tools ...

  5. 【转】VNC不同软件之间的联系与区别

    转自:http://www.52iot.net/book/net/76.mhtml 如果不是经常远程不建议使用VNC,毕竟比较耗资源 不建议使用vnc, 如果只是使用文件服务,可以通过ssh协议的客户 ...

  6. Glade3 tutorial in chinese

    Part 1 Quick Overview of GTK+ Concepts (转) 如果你没有任何 GTK+ 的编程经验, 那么, 对于我将要阐述的一些概念你也许会听着犯迷糊.不过,不用担心, 在遇 ...

  7. 50多个开源PDF阅读编辑工具汇总

    PDF Editing & Creation: 50+ open source/free alternatives to Adobe Acrobat 文章来源于这里, 版权归原作者所有. Ad ...

  8. 下载安装 gSoap

    文章目录 1. Products (产品介绍) 2. Dev Center (开发者中心) (1)Getting Started(入门教程) (2)Tutorials(教程) (3)Documenta ...

  9. wxWidgets编译安装gtk问题的解决办法

    下面是google到的一篇博文.我在centos5.3中想安装amule,结果编译时,提示没找到wxWidgets退出了.只好又去下了wxWidgets,还是源码,需要编译.编译中出现和下面这位网友一 ...

最新文章

  1. Java泛型使用需要小心
  2. Unix网络协议分析
  3. 在微信小程序中调用本地接口
  4. linux安装mysql8.0.18_Linux安装MySQL8.0
  5. mysql 存储过程 记录是否存在_如何检查MySQL中是否存在存储过程?
  6. 《c++ const 详细总结》--转载
  7. 用javascript完成pos机的输入输出
  8. python爬虫酷狗_python爬虫教程:爬取酷狗音乐,零基础小白也能爬取哦
  9. python通过txt文件将指定图片复制到另一个文件夹
  10. html中input描述,input的type值类型和描述-HTML
  11. php httputils,Android 自定义网络加载工具类 HttpURLConnectionUtils
  12. 波形信号发生器设计 Proteus仿真--输出频率可调的正弦波、三角波、方波
  13. TIS-prescan
  14. 发那科数据服务器文件名,FANUC传输参数设置
  15. 计算机怎么退出远程桌面连接,怎么退出远程桌面控制?远程桌面软件哪个好?
  16. wps两个表格对比数据(怎样对两个EXCEL表格数据对比,找出相同和不同的数据?)
  17. Python爬取句子迷-莎士比亚语录
  18. 邮件安全防护之反垃圾邮件开源软件ASSP
  19. 我们都知道李、张、王、刘是四大姓氏,那么四小姓氏你知道几个?
  20. XSS注入之xss-labs

热门文章

  1. Iview的Tabs定时切换
  2. 推荐系统和搜索引擎的关系
  3. EF更新指定字段...
  4. .NET开发 正则表达式中的 Bug
  5. iOS CoreData简单入门 - Swift版
  6. ASC2 E Quantization Problem DP
  7. com.android.backupconfirm,终于去掉beta俱乐部了
  8. 测试低频噪音软件,设计制作并验证0.1Hz10Hz超低频微弱噪音检测放大器要点
  9. Java读取文件中的arraylist_java – 从文件中读取ArrayList作为对象?
  10. html日期选择格式 now,JavaScript的Date.now()方法怎么用?