Linux GUI 开发包简介-GTK
gtk(gimp toolkit)是一个库,用来写图形用户界面程序的。这样的库太多了,windows平台上有mfc、vcl等等,linux平台上更是层出不穷,而且好多都具备跨平台功能,比如Qt、wxWidgets、FLTK等等。gtk与这些库的不同点在于其完全使用C语言开发的。 上面只是说了gtk,但我要学习的是gtk+。它们之间有什么关系呢?gtk+的作者之一 Perter Mattis说他
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的缺点就是过于大而全了。
更多推荐
所有评论(0)