`
djsl6071
  • 浏览: 578669 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

GTK+简介

阅读更多

转自: 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+ 简介:本 GTK+程序初级教程采用了“引导”式的方法来教你如何使用 GTK+。本教程所用的编程语言 为 C 语言。并且整个教程中方法已经在 Linux 中测试通过。本教程适用 GTK+的初级兼代中级 水平的程序员。

    GTK+GNOME程序设计PDF(高清)2

    主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的简介,各种GUI元素的创建与使用,bIDE,Glade等等。最后通过两个综合实例来巩固所学知识。本书实例丰富,理论联系实际,是一本实践性很强的编程参考书。本书虽然...

    GTK+GNOME程序设计PDF(高清)1

    主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的简介,各种GUI元素的创建与使用,bIDE,Glade等等。最后通过两个综合实例来巩固所学知识。本书实例丰富,理论联系实际,是一本实践性很强的编程参考书。本书虽然...

    GTK+程序设计中文版.pdf

    GTK+ 简介 关于本初级教程 l 本 GTK+程序初级教程采用了“引导”式的方法来教你如何使用 GTK+。本教程所用的编程语言 为C 语言。并且整个教程中方法已经在 Linux 中测试通过。本教程适用GTK+的初级兼代中级 ...

    Linux程序开发Gtk+ Gnome库

    第2章 Gtk+/Gnome开发简介 8 2.1 安装Gtk+/Gnome库 8 2.2 第一个Gtk+应用程序 9 2.2.1 一个什么也不能做的窗口 9 2.2.2 示例代码的含义 9 2.2.3 GTK的Hello World 10 2.2.4 Gtk+的信号和回调函数原理 12 2.2.5 Hello...

    gtk+gnome 开发简介

    简介流行的用户界面制作工具集,GTK能帮用户快速的制作具有吸引人的界面

    GTK+2.0 中文版(基于GNOME官方文档翻译)

    简介 从这里开始 用 GTK 来写 Hello World 编译 Hello World 程序 信号和回调函数的原理 事件 Hello World 详解 继续 数据类型 深入探索信号处理函数 改进了的 Hello World 组装构件 组装盒的...

    GTK+GNOME程序设计PDF(高清)3

    主要内容包括:GUI的基本概念,GLib,GTK+及GNOME的简介,各种GUI元素的创建与使用,bIDE,Glade等等。最后通过两个综合实例来巩固所学知识。本书实例丰富,理论联系实际,是一本实践性很强的编程参考书。本书虽然...

    GTK+2.0+中文教程.pdf

    简介 GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以你可以用它来开发开源软件、自由软件,甚至是 封闭源代码的商业软件,而不用花费任何钱来购买许可证和使用权。 GTK 被称为 ...

    GTK 程序设计中文版

    GTK+ 简介关于本初级教程 l 本 GTK+程序初级教程采用了“引导”式的方法来教你如何使用 GTK+。

    GTK+2.0中文教程 html格式

    简介 从这里开始 用 GTK 来写 Hello World 编译 Hello World 程序 信号和回调函数的原理 事件 Hello World 详解 继续 数据类型 深入探索信号处理函数 改进了的 Hello World 组装构件 组装盒的原理 盒...

    Linux应用程序开发指南:使用Gtk+ Gnome库.rar

    内含目录.txt 和内容简介.txt,以及21个章节pdf文件.

    nec2c:基于 GTK+-3 的 nec2c 的 GUI 版本,用于电磁天线仿真_C语言_代码_下载

    一、简介: Xnec2c是一个基于 GTK3 的 nec2c 图形版本,我翻译成 NEC2 的 C 语言,FORTRAN 数字电磁代码常用于天线仿真和分析。最初的 nec2c 是一个非交互式命令行应用程序,它读取标准 NEC2 输入文件并生成一个...

    Linux程序设计 第4版.haozip01

    16.2 gtk+简介 549 16.2.1 glib类型系统 549 16.2.2 gtk+对象系统 550 16.2.3 gnome简介 550 16.2.4 安装gnome/gtk+开发库 551 16.3 事件、信号和回调函数 554 16.4 组装盒构件 556 16.5 gtk+构件 559 ...

    Linux程序设计 第4版.haozip02

    16.2 gtk+简介 549 16.2.1 glib类型系统 549 16.2.2 gtk+对象系统 550 16.2.3 gnome简介 550 16.2.4 安装gnome/gtk+开发库 551 16.3 事件、信号和回调函数 554 16.4 组装盒构件 556 16.5 gtk+构件 559 ...

    The-GTK-Keylogger:GTK键盘记录器

    简介 有两种情况可以决定键盘记录程序的内容:执行空间。 它们可以是用户空间或内核模式。 虽然LKM键盘记录程序取决于Linux内核的版本以及对模块加载的支持,但在Google上公开的大多数ring3软件都基于evdev。 两者...

    SolidOak NeovimSolidOak-用于Rust的简单IDE,基于GTK +和Neovim-Rust开发

    简介SolidOak是Rust的简单IDE。 请参阅网站以获取二进制版本。 它具有以下功能:Neovim的嵌入式副本及其简介...用gtk-rs编写的易于使用的GUI,用于执行常规编辑操作的按钮以及与Neovim保持同步的项目树。您可以绕过GUI

Global site tag (gtag.js) - Google Analytics