学习使用GTK+ 0.概述
GTK+是当下流行的图形界面库之一,使用GTK+可以方便地构造出应用程序界面。叶子觉得GTK+很好用,在这里推荐给大家,并留下自己的一些使用心得。希望你也喜欢~
在Programet这个系列中,你可以看到GTK+通俗的介绍,了解使用方法和常用API,我们希望能对你有所帮助。下面是这个系列的内容线索(本系列不断更新中,这个列表可能随更新而有少量变化):
- 构建GTK+编译环境
- GTK+“Hello World”——对GTK+运作机制的通俗介绍
- 使用GtkBuilder、界面设计器Glade和其他GTK+组件
- GTK+常用物件及API(窗口)
- GTK+常用物件及API(文本)
- GTK+常用物件及API(按钮)
- GTK+常用物件及API(其他)
- GLib中的小工具
- 使用gettext实现国际化和制作语言包
- 【高级主题】使用GDK访问底层屏幕和事件
- 【高级主题】使用gtk-pixbuf处理图像和图像文件
- 【高级主题】使用GIO中的GSocket访问网络
- 【高级主题】使用cairo绘图
上面的列表中并没有“GTK+介绍”一项,因为我要在这篇文章后半部分完成它!
GTK+究竟能做什么
GTK+是图形界面库,能帮助我们简洁方便地绘制窗口和里面的输入框、按钮等等。这能减少我们很多麻烦——有经验的童鞋可能深有体会,图形界面几乎是应用程序编写中最繁琐的部分。图形界面库就是为了方便我们组织界面而出现的,使用它可以大大减少我们花在组织界面上的代码量。
同时,GTK+可以配合界面设计器Glade,换句话说,做界面不用敲冗长的代码,界面可以画出来!
更重要的是,GTK+是跨平台的。只要代码写得标准,在Windows、Linux和Mac OS下,不用做任何修改就可以展现出同样的界面,方便吧~
GTK+支持的
GTK+是一个开源跨平台的库,支持很多平台,这里就不一一列举了。它遵循LGPL协议,也就是说我们可以自由地使用它,使用它制作的程序可以自行选择开源与否。
GTK+是用C语言编写的,很多GTK+应用程序也使用C语言完成。但如果你讨厌C语言的话,你同样可以选用其他多种语言,包括C++、Java、Python等等,甚至还可以是PHP。而且在各种语言中的API很相似,这让我们在各种语言下玩GTK+变得很方便。
谁在用GTK+
GTK+现在为很多软件所使用,最典型的是Linux桌面环境GNOME和Xfce,包括在它们中运行的众多软件(很多时候GNOME和Xfce软件可以混用,因为他们都是GTK+的)。
还有号称“开源PS”的GIMP、矢量图编辑器Inkscape等等,还有只是使用部分GTK+库(尤其是GLib)的众多软件,还有偷偷拿GTK+代码来用的软件……
与GTK+相似的图形界面库
目前,还有很多流行的图形界面库:
- MFC——微软的一个C++库,很多人用,但功能落后,也被讽刺为“半成品”。
- Qt——大红大紫的一个图形界面库,各方面表现都很好。现归属于Nokia。(传说很久很久以前QT和GTK+的支持者喜欢对骂……)
- WxWidgets——个人认为这个库灰常强大!它在不同操作系统中都可以生成“原生”的界面,甚至不需要运行库!只是有人说不稳定……
还有其他的一些,这里就不提了吧。
毫无疑问的是,GTK+是它们中很有特点的一个。你很难找出第二个C语言图形界面库。GTK+以架构严谨优秀高效著称,是GNU项目的一部分,像是很标准的GNU式的开源项目。它和GNU项目中的其他部分配合良好,遇到麻烦时,常常可以让其他库帮忙。
GTK+的历史与前景
GTK+是1999年开始发展的一个项目,在图形界面库中算很年轻的,但是发展飞速,以至于网络上对其的描述都难以跟上其发展(现在搜索到的很多描述不正确)。GTK+一直由社区维护,但同时又备受众多商业公司青睐,应用领域在不断扩展中。
有关本系列
在这一系列文章中,GTK+原生语言——C语言将被用来举例,其他语言使用方法类似,具体请参见不同语言的文档。这也要求读者能熟练运用C语言。
文章中的例子使用Windows下的GTK+ 2.16(GLib 2.24)编译通过,并特别照顾Windows下的配置、使用,相较而言,在Linux下的配置、使用简单一些。
最后声明
若本系列中出现错误,欢迎指正~
本系列涉及的内容未经Programet同意不得转载!
本文由 最后的叶子 创作,转载或引用前请联系我们。
相关文章:
啥时候写一篇介绍怎么用xlib/xcb…
回复
“WxWidgets——个人认为这个库灰常强大!它在不同操作系统中都可以生成“原生”的界面,甚至不需要运行库!”
“甚至不需要运行库”是什么意思?
回复
WxWidgets有个模式是可以完全使用静态链接库的。。。
回复
请问有哪个库不能这么做
回复
绝大多数都不行的。比如Windows下GTK+应用程序需要GTK+ Runtime,你可以看看Pidgin和Inkscape之类的Windows安装程序,都有GTK+ Runtime的有关信息。
回复
尽管默认不行,但是你可以自己编译一套静态库啊
回复
可是有人这么做么?官方不提供是有道理的,不是所有库都适合做成静态库,有很多问题需要考虑的,比如依赖库的状况和库的大小。
回复
我们在讨论”可不可以”…
回复
可以的。但是应该并不适合。
不过你可以试试。
回复
我不空虚= =
回复
是很麻烦的一件事,GTK+依赖库不少,现在都是dll,如果都编译成lib……
回复
体积将近20M吧,甚大
我精简的GTK+运行库有约13M,压缩后3M
而且静态库就不算库么…
回复
GTK+可以看作是xlib的封装。xlib里面的函数太“低级”了。
回复
你只能说GDK是xlib的封装。GTK+是个很大的东西,涉及的面很广,比如glib这种,和xlib没太大关系。
回复
博主的这一系列文章写得简洁易懂,佩服!!
回复
谢谢,可是最近没时间更新……不好意思
回复