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. Windows下GIT安装与使用(上传远程端)

    Windows下GIT安装与使用(上传远程服务器) 1.  登陆http://msysgit.github.io/并下载Git 2.  打开下载的exe文件,一路默认(路径可以去修改).有可能电脑需要 ...

  2. php与mysql的常规使用

    <?php header("Content-type:text/html;charset=GBK"); /* 通常,php网页中完成有关数据库的操作,首先,需要如下代码: $ ...

  3. Omi v1.0震撼发布 - 令人窒息的Web组件化框架

    原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...

  4. GCC命令

    一. 常用编译命令选项 源程序test.c 1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为a.out. 2. ...

  5. Alamofire源码解读系列(九)之响应封装(Response)

    本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...

  6. smartGWT DataSource数据动态加载

    昨天和今天早上,用DataSource从数据库后台动态加载数据,我的业务是这样的: 我有两个SelectItem选择框,第一个选择框里面的数据是单位,第二个选择框中的数据是对应单位的人,因为人可能有重 ...

  7. centos 6.5 搭建ftp服务器

    linux下一般使用vsftpd作为ftp服务器. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用. 下面是安装配置步骤: 1.安装vsftpd yum i ...

  8. Docker系列一之基础快速入门企业实战

    1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...

  9. webix .datatable 表格分页

    grid表格返回参数大都是 以下这种格式(参数名可能不一样) { data:[{...},{...} ...], count:39 } webix的参数格式为 { data:[{...},{...}, ...

  10. C#研究OpenXML之路(3-OpenXMLSDKToolV25.msi)

    一.OpenXMLSDKToolV25.msi 看了几天的OpenXml,感觉如果完全手写代码,将会是一件非常苦逼的事情,即要分析对应xlsx文件层次结构,以及包含的xml文件的xml标签结构,还要关 ...