转自: http://www.yuanma.org/data/2007/0217/article_2314.htm
gtk(gimp toolkit)是一个库,用来写图形用户界面程序的。这样的库太多了,windows平台上有mfc、vcl等等,linux平台上更是层出不穷,而且好多都具备跨平台功能,比如Qt、wxWidgets、FLTK等等。gtk与这些库的不同点在于其完全使用C语言开发的。
上面只是说了gtk,但我要学习的是gtk+。它们之间有什么关系呢?gtk+的作者之一 Perter Mattis说他原来开发的gtk包含了三套函数库, libglib、libgdk,和libgtk,这些库没有采用面向对象机制,因而无法实现构件的复用,而且消息机制是使用标准的回调机制实现的,而非现在的gtk+所提供的信号机制。“+”是用来区分原始版本和新版本的。gtk+依然是完全使用C语言开发的,但在设计上灵活运用了面向对象设计(OOD)思想(谁说只有C++、java、C#这样的语言可以OOD呢?),虽然现在我不是很明白其具体技术细节,但想来,用C来做gtk应该比C++程序执行效率要高一些(当然这只是一种感觉而已,如果C程序写的不够好,不一定比C++高效)。
用gtk+写的程序界面的视感很象Motif(Motif是一个工业标准的GUI),事实上它比Motif看起来可爱多了。gtk+包含了许多常用的窗口部件,如文件选择、颜色选择部件等。另外,gtk+也提供了一些独具特色的部件,譬如不包含标签而包含子部件的按钮,几乎可以在这样的按钮上放置任何窗口部件,看设计者的需求了,类似这样的弹性充斥在整个库中。
gtk+允许软件开发人员用简单的方式说出自己想要的东西,不会用所谓的正规方式给开发人员带来负担。在Windows下用过MFC的人们大都体验过2/3的编程时间是在写GUI,写到最后都忘记了自己的角色是做应用程序的,而不是GUI开发者。CSDN的VC版里,N多牛人在炫他们的GUI技术,可他们从来不会去问:这个常用的组件为什么微软不为我们做好,直接调用呢?我很讨厌在写程序中,跌入GUI的陷阱里。如果我们所写的程序真的很有用,即使做成CUI式的,也会被很多人所喜欢。
gtk+为应用程序的国际化(i18n)、本地化(i10n)提供了很好的处理工具,能够让编写的程序可以不加修改,只需要切换不同语种所需要的语言数据文件,就可以为不同语种的人们所使用。现在,许多自由软件再也不需像从前那样进行艰苦地“汉化”了。
有些用户视力不佳,有些人可能不能用键盘或鼠标,有些人可能只能移动他的眼睛,要剥夺这类用户使用计算机的权利么?有爱心的程序开发人员是不会这样做的。gtk+可以通过一个完善的、预先存在的ally框架,几乎什么工作都不用做,就可以将应用程序带给各类用户。
gtk+是采用软件开发中的最新技术开发的,只要发现缺陷,开发人员会在下一般本中尽力修补;提出反馈意见,他们会积极地分析、采纳,他们让我们不会陷在过时的工作中,而且让我们每个人都拥有影响gtk+未来发展方向的能力。
gtk+是GNU组织开发的,我记不住它的开发者的名字(老外的名字我很少能记得住),但这并不剥夺你获取、使用、改写、分发它的权利。最重要的是,gtk+采用了LGPL协议,允许任何人免费使用它的全部功能,且不像GPL协议那样要求用户必须其编写的应用程序代码。使用LGPL协议,你既可以是开源社区的好伙伴,也可以是好公民。
gtk+是可移植的,而且具有多种语言前端,譬如C++、Perl、Python、TOM、Ada95、Free Pascal、Eiffel、JAVA,以及C#等等。在选定gtk+以前,我考虑很长时间是不是在下个项目的GUI程序开发中应该用大名鼎鼎的Qt,比较了好久,我放弃了Qt。虽然目前Qt的可移植性与易用性都优于gtk+,但C++的实现,让它过于笨重了,而且它的主要开发工作是在03年C++标准颁布之前进行的,与标准C++的兼容性实在是个问题。gtk+是C语言开发的,而C语言标准长期以来几乎没有变化,Qt要适应C++标准,应该要大动了。举个简单的例子吧,我们使用标准C++所提供的字串类型呢,还是去用Qt自己实现的?另外,与gtk+所遵循的版权协议相比,Qt要开发商业程序依然价格不菲。我觉得Qt的缺点就是过于大而全了。
唉,对一件事物,过多的谥美会毁掉它。偶不是gtk+的传教士,也不是它的开发者,作为初次接触Linux平台GUI编程人,我也很希望gtk+真的像上面说的那样好。
分享到:
相关推荐
**GTK+简介** GTK+最初为图像处理软件GIMP(GNU Image Manipulation Program)设计,后来发展成为一种通用的GUI工具包,支持多种操作系统,包括Linux、Windows和macOS。它采用C语言编写,同时提供了多语言绑定,如...
主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的简介,各种GUI元素的创建与使用,bIDE,Glade等等。最后通过两个综合实例来巩固所学知识。本书实例丰富,理论联系实际,是一本实践性很强的编程参考书。本书虽然...
1. **GTK+简介**:GTK+起源于GIMP图像编辑器的工具包,现在已经发展成为一个功能强大的跨平台GUI库,支持多种编程语言,如C、Python、Vala和Java等。 2. **GTK+设计理念**:GTK+遵循模型-视图-控制器(MVC)设计...
1. **GTK+简介**:GTK+是GIMP Toolkit的缩写,最初是为了GIMP图像编辑器而创建的。现在,它已经成为一个独立的开源库,支持多种编程语言,如C、Python、Java和Vala等。GTK+基于对象模型,提供了丰富的控件集和布局...
- **GTK+和Gnome简介**:理解GTK+和Gnome的历史背景、设计理念以及它们在Linux生态系统中的角色。 - **Gnome框架**:深入学习Gnome作为GUI应用开发框架的核心组件和技术特点。 - **GTK+编程基础**:掌握GTK+编程语言...
#### 一、GTK+简介 - **GTK+**(GIMP Toolkit)是一种跨平台的工具包,主要用于构建图形用户界面(GUI)。它支持多种操作系统,如Linux、Windows和Mac OS等。GTK+广泛应用于各种桌面应用软件的开发之中,特别是Linux...
#### 一、简介 GTK+(GIMP Toolkit)是一种用于构建用户界面的工具包,广泛应用于基于Linux和其他类UNIX系统的应用程序中。GTK+2.0作为该工具包的一个重要版本,在设计上更加成熟稳定,并提供了丰富的功能和API。本...
GTK+ 简介:本 GTK+程序初级教程采用了“引导”式的方法来教你如何使用 GTK+。本教程所用的编程语言 为 C 语言。并且整个教程中方法已经在 Linux 中测试通过。本教程适用 GTK+的初级兼代中级 水平的程序员。
#### 一、GTK+简介 GTK+(GIMP Toolkit Plus)是一种跨平台的用户界面工具包,主要用于构建基于Linux和其他类UNIX操作系统的图形用户界面(GUI)。它最初是为了支持GIMP(GNU Image Manipulation Program)而开发的...
#### 二、GTK+简介 - **定义**:GTK+是一种广泛使用的函数库,主要用于帮助开发者创建图形用户界面(GUI),特别适用于Linux和BSD Unix操作系统。 - **历史背景**:GTK+最初是为了支持GIMP(一款图像编辑软件)而...
1. **GTK+简介** GTK+是一个开源的跨平台GUI工具包,它提供了一系列的控件和接口,用于创建美观且功能丰富的应用程序。GTK+使用C语言编写,但提供了多种语言的绑定,如Python(PyGTK)、Perl(GTK2-Perl)和Java...
简介 从这里开始 用 GTK 来写 Hello World 编译 Hello World 程序 信号和回调函数的原理 事件 Hello World 详解 继续 数据类型 深入探索信号处理函数 改进了的 Hello World 组装构件 组装盒的...
### GTK+简介 GTK+(GIMP Toolkit)是一个跨平台的工具包,用于构建图形用户界面(GUI)。它主要用于Linux和其他类Unix系统上的应用程序开发,但也可以在Windows、macOS等其他操作系统上运行。GTK+支持多种编程语言...
简介 GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以你可以用它来开发开源软件、自由软件,甚至是 封闭源代码的商业软件,而不用花费任何钱来购买许可证和使用权。 GTK 被称为 ...
#### 二、GTK+简介 - **起源与发展**:GTK+起源于GIMP项目的内部需求,但很快就超越了最初的用途,发展成为一个独立的工具包,并成为了GNOME桌面环境的核心组成部分。 - **许可证**:GTK+遵循LGPL(GNU宽通用公共...
主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的简介,各种GUI元素的创建与使用,bIDE,Glade等等。最后通过两个综合实例来巩固所学知识。本书实例丰富,理论联系实际,是一本实践性很强的编程参考书。本书虽然...
#### 一、Gtk+简介 Gtk+(GTK:GIMP Toolkit)是一种广泛应用于Linux及其他类UNIX操作系统上的开源图形用户界面工具包。它为开发者提供了创建跨平台应用程序所需的各种控件,如按钮、文本框、菜单等。Gtk+因其强大...