GTK+http://zh.wikipedia.org/wiki/GTK%2B#.E5.9B.BE.E5.BD.A2.E6.97.A0.E5.85.B3.E4.BB.A3.E7.A0.81

GTK+最初是GIMP的专用开发库(GIMP Toolkit),后来发展为Unix-like系统下开发图形界面的应用程序的主流开发工具之一。GTK+是自由软件,并且是GNU计划的一部分。GTK+的许可协议是LGPL

编程语言

GTK+使用C语言开发,但是其设计者使用面向对象技术。也提供了C++gtkmm)、PerlRubyJavaPython(PyGTK)绑定,其他的绑定有AdaDHaskellPHP和所有的.NET编程语言。

与其他很多部件工具箱不同,GTK+ 并不基于Xt。这一决策优劣互见:优点是GTK+
可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为X11定制的X资源数据库。GTK+ 最早应用于X Window System,如今已移植至其他平台,诸如Microsoft
Windows
DirectFB,以及QuartzMac
OS X
.

Glade是一个界面设计工具,但是它也包含了一种描述GUI界面的XML语言,它和libglade一起工作就可以直接使用GTK和GNOME控件;新的Glade-3不再直接支持生成编程语言源代码

外观和感觉[

提供不同的显示引擎使得最终用户可以定制外观和感觉。目前已经有一些可以模仿其他流行的平台或者工具箱(例如Windows 95MotifQt或者NEXTSTEP)的引擎。

使用

使用GTK的环境

  • GNOME是以GTK+为基础,就是说为GNOME编写的程序使用GTK+ 做为其工具箱。
  • Xfce也基于GTK+,但是它的应用程序并不对很多其他程序有依赖。(这就是"GNOME程序"和"GTK+程序"的不同。)
  • LXDE也基于GTK+,一个尽可能减少包相依性的桌面环境。
  • GPE Palmtop环境和Nokia互联网平板电脑的框架Maemo基于GTK+。

这只是一部分,另外GTK+ 也可以运行在KDE的环境下。而且GTK+ 也可以在Microsoft
Windows
运行,另外还有DirectFBncurses

使用GTK的窗口管理器

GTK+应用程序

以下程序都是使用GTK+开发、属于开源软件,可以运行于LinuxUnixWindowsMac等多种操作系统平台上。

  • Firefox-Mozilla基金会的网页浏览器。
  • Geany-代码编辑器
  • GIMP-类似于Photoshop的图像处理程序
  • Inkscape-类似于IllustratorCorelDraw的矢量图形绘制工具
  • Pidgin-支持多种协议(IRC、Gtalk、Yahoo Talk、MSN等等)的聊天工具
  • gcin-一种在Linux、Windows系统上常见的输入法平台

主要版本

发布日期

主要增强

最后次要版本

1.0

1998年4月14日

第一个稳定版本

1.0.6

1.2

1999年2月27日

新增部件(GtkFontSelector、GtkPacker、GtkItemFactory、GtkCTree、GtkInvisible、GtkCalendar、GtkLayout、GtkPlug、GtkSocket)

1.2.10

2.0

2002年3月11日

GObject, UnicodeUTF-8)支持

2.0.9

2.2

2002年12月22日

Multihead support

2.2.4

2.4

2004年3月16日

新增部件(GtkFileChooser、GtkComboBox、GtkComboBoxEntry、GtkExpander、GtkFontButton、GtkColorButton)

2.4.14

2.6

2004年12月16日

New widgets (GtkIconView, GtkAboutDialog, GtkCellView).

最后一个支持Windows 98/Me的版本

2.6.10

2.8

2005年8月13日

Cairo integration

2.8.20

2.10

2006年7月3日

新增部件(GtkStatusIcon、GtkAssistant、GtkLinkButton、GtkRecentChooser)以及打印支持(GtkPrintOperation)

2.10.14

2.12

2007年9月14日

GtkBuilder

2.12.12

2.14

2008年9月4日

Jpeg2000 load support

2.14.7

2.16

2009年3月13日

New GtkOrientable, Caps Lock warning in password Entry.

Improvement on GtkScale, GtkStatusIcon, GtkFileChooser.

2.16.6

2.18

2009年9月23日

New GtkInfoBar. Improvement on file chooser, printing.

GDK has been rewritten to use 'client-side windows'

2.18.9

2.20

2010年3月23日

New GtkSpinner and GtkToolPalette, GtkOffscreenWindow. Improvement on file chooser,

keyboard handling, GDK.Introspection data is now included in GTK+

2.20.1

2.22

2010年9月23日

gdk-pixbuf moved to separate module, most GDK drawing are based on Cairo,

many internal data are now private and can be sealed in preparation to GTK+3

2.22.1

2.24

2011年1月30日

New simple combo box widget (GtkComboBoxText) added, the cups print backend can send print jobs as PDF,

GtkBuilder has gained support for text tags and menu toolbuttons and many introspection annotation fixes were added

2.24.0

3.0

2011年2月10日

Cairo, more X11 agnostic, XInput2, CSS-based theme API

3.0.0

图形无关代码

最初GTK+包括一些和图形无关的常规功能,如链表二叉树数据结构。这些基本功能和对象系统GObject已经合并到独立的Glib,它被程序员专门用于开发不需要图形界面的代码。

GTK+ 2

2002年3月11日,GTK+2.0版正式发布。GTK+ 2是GTK+ 后继版本,其新特性包括使用Pango改进的文本渲染、新主题引擎、使用ATK改进的可达性、完全转换到使用UTF-8Unicode和更灵活的API。但是它和GTK+
1不完全兼容,因此必须由程序员做移植工作。由于GTK+ 1更快、相对更简单或更加适合嵌入式应用,所以还被继续使用。

从GTK+ 2的2.8版起,它依靠Cairo完成渲染,而这引入了矢量图形的支持。

发展

Ridley项目正在尝试统一一系列和GTK+相关的库,包括libgnome、libgnomeui、libgnomeprint、libgnomeprintui、libglade、libgnomecanvas、libegg、libeel和gtkglext。

GTK+ hello world

GTK+ hello world以C撰写,这支程序含有视窗,标题为"Hello, World".

 #include <gtk/gtk.h>

 int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *label; gtk_init (&argc, &argv); /* create the main, top level, window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* give it the title */
gtk_window_set_title (GTK_WINDOW (window), "Hello World"); /* Connect the destroy signal of the window to gtk_main_quit
* When the window is about to be destroyed we get a notification and
* stop the main GTK+ loop
*/
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_main_quit), NULL); /* Create the "Hello, World" label */
label = gtk_label_new ("Hello, World"); /* and insert it into the main window */
gtk_container_add (GTK_CONTAINER (window), label); /* make sure that everything, window and label, are visible */
gtk_widget_show_all (window); /* start the main loop, and let it rest there until the application is closed */
gtk_main (); return 0;
}

GTK+ Runtime Environment for Windows

由于GTK主要是作为Unix-like系统底下的接口,在Windows使用该系统所开发的软件时就需要用到GTK+ 运行环境,即GTK+ Runtime Environment for Windows。这个软件与GTK+不同的地方在于它仅仅是为了运行软件用途而制作,以解决Windows没有内置GTK+库的问题。

参见

外部链接

GTK简单了解记录的更多相关文章

  1. 如果简单的记录,就可以为这个世界创造更多的财富,那么还有什么理由不去写博客呢? — 读<<黑客与画家>> 有感

    上一次博文发文时间是2016.1.15,7个月已经过去了.最近读了一本<>的书,对我触动挺大的!里面有关于技术趋势的探讨,也有关于人生和财富的思考! 开始更新iOS122的文章的初衷是,聚 ...

  2. Python简单爬虫记录

    为了避免自己忘了Python的爬虫相关知识和流程,下面简单的记录一下爬虫的基本要求和编程问题!! 简单了解了一下,爬虫的方法很多,我简单的使用了已经做好的库requests来获取网页信息和Beauti ...

  3. redis5.0.3单实例简单安装记录

    redis5.0.3单实例简单安装记录 日常需要测试使用,索性记录下来,免得临时又麻烦的找资料. yum -y install make gcc-c++ cmake bison-devel ncurs ...

  4. Oracle触发器简单入门记录

    写在前面: 最近,老项目新增了日报优化的需求,丽姐让我用触发器去实现当数据插入或者更新的时候,实现对日报表数据更新操作.嗯嗯嗯呢,之前学习数据库的时候,有碰到过触发器,但都是一跳而过,也没怎么去真正的 ...

  5. 27:简单错误记录SimpleErrorLog

    题目描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理: 1. 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加: ...

  6. percona-toolkit 3.0.13 简单安装记录

    percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...

  7. .Net写txt文件-简单的记录执行日志信息代码

    在执行一些批量操作时,想记录一些执行日志信息,越简单方便越好啊.提供一个常用的简单方法,将信息记录在txt文件里: public static void log(string content, str ...

  8. 测试与开发如何有效沟通,QC11(HP ALM 11)的简单使用记录

    笔者所在的项目组使用的缺陷管理工具是HP的QC11,作为测试人员,为了与开发一起跟随Bug的一生,简单的写了使用流程,这里记录一下,主要是让开发人员熟悉一下. 首先使用账户登录QC,如地址: http ...

  9. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存

    代码已上传Github+Gitee,文末有地址 上回<从壹开始前后端分离[ .NET Core2.0 Api + Vue 2.0 + AOP + 分布式]框架之九 || 依赖注入IoC学习 + ...

随机推荐

  1. effective C++ Item 33 避免隐藏继承而来的名字

    1. 普通作用域中的隐藏 名字实际上和继承没有关系.有关系的是作用域.我们都知道像下面的代码: int x; // global variable void someFunc() { double x ...

  2. http的几种请求的方式(Get、Post、Put、Head、Delete、Options、Trace和Connect)

    http的这几种请求方式各有各的特点,适用于各自的环境.下面我就说说这些方式的各自特点: 1.Get:它的原理就是通过发送一个请求来取得服务器上的某一资源.获取到的资源是通过一组HTTP头和呈现数据来 ...

  3. js数据类型:引用和5种基本数据类型

    javascript有2种基本数据类型:引用和基本数据类型 基本数据类型又有5个分类:布尔型.字符串.数值.undefined.NULL.

  4. otool介绍(转http://www.mc2lab.com/?p=68)

    1. Otool简介 Otool可以提取并显示ios下目标文件的相关信息,包括头部,加载命令,各个段,共享库,动态库等等.它拥有大量的命令选项,是一个功能强大的分析工具,当然还可以做反汇编的工具使用. ...

  5. php中数据库服务器连接类库文件的编写

    <!--数据库服务器连接类库文件的编写--> <?php class mysql{ //连接服务器.数据库以及执行Sql语句的类库 public $database; public ...

  6. Linux块设备驱动(二) _MTD驱动及其用户空间编程

    MTD(Memory Technology Device)即常说的Flash等使用存储芯片的存储设备,MTD子系统对应的是块设备驱动框架中的设备驱动层,可以说,MTD就是针对Flash设备设计的标准化 ...

  7. 【翻译】CSS水平和垂直居中的12种方法

    英语原文链接 在CSS中有许多不同的方法能够做到水平和垂直居中,但很难去选择合适的那个.我会向你展示我所看到的所有的方法,帮助你在所面对的情境下选择最棒的那一个. 方法1 此方法将只能垂直居中单行文本 ...

  8. linux vi hjkl由来

    很远原因来自历史 I was reading about vim the other day and found out why it used hjkl keys as arrow keys. Wh ...

  9. java安装1335错误解决办法(亲测)

    心血来潮想了解一下java,结果一开始就碰到了让心"恶心"的1335错误. 废话不多说,直接看下面: 你可以先尝试在这个链接下载java.exe文件 http://www.orac ...

  10. How do you make an awesome team?(来考验一下自己的英语能力吧)

    How do you make an awesome team? I was talking to my awesome friend Amy Hanlon (who is a software en ...