“GUI开发”的版本间的差异
来自Ubuntu中文
(→相关介绍) |
|||
第1行: | 第1行: | ||
==常用widget toolkits的分类== | ==常用widget toolkits的分类== | ||
=GTK= | =GTK= | ||
− | == | + | == GTK+简介 == |
− | + | ||
+ | '''GTK+'''最初是GIMP的专用开发库,后来发展为Unix-like系統下开发图形界面的应用程序的主流开发工具之一。GTK+是自由软件,并且是GNU计划的一部分。GTK+ 的许可协议是 LGPL。 | ||
+ | |||
+ | == 编程语言 == | ||
+ | |||
+ | GTK+使用'''C语言'''开发,但是其设计者使用面向对象技术。 也提供了 C++(gtkmm)、Perl、Ruby、Java 和 Python(PyGTK)绑定,其他的绑定有 Ada、D、Haskell、PHP 和所有的 .NET 编程语言。 | ||
+ | |||
+ | 与其他很多部件工具包不同,GTK+ 并不基于Xt。这一决策优劣互见:优点是 GTK+ 可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为 X11 定制的X资源数据库。 | ||
+ | |||
+ | Glade 是一个界面设计工具,但是它也包含了一种描述 GUI 界面的 XML 语言,它和 libglade 一起工作就可以直接使用 GTK 和 GNOME 控件;新的Glade-3 不再直接支持生成编程语言源代码。 | ||
+ | |||
+ | == 外观感觉 == | ||
+ | |||
+ | 由提供的不同的显示引擎使得终端用户可以定制外观和感觉。目前已经有一些可以模仿其他流行的平台或者工具包(例如Windows 95、Motif、Qt或者NEXTSTEP)的引擎。 | ||
+ | |||
+ | == 发展历史 == | ||
+ | |||
+ | 自GTK+1.0最早由1998年建立来,发行了诸多版本,目前最新版本为2.16. GTK+2.0 继承了 GTK+1.0 的所有特性,并在此基础上增加了其他一些特性,如改进的字体渲染工具包 Pango,主题引擎,辅助工具包, 完全移植到Unicode-8,以及更加灵活的 API (应用程序接口).然而 GTK+2.0 与 1.0 不兼容,所以需要程序自己移植. | ||
+ | |||
+ | Ridley项目将在未来的版本中融合一些函数库,包括libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel and gtkglext.目前GTK+ 3.0正在开发中. | ||
+ | |||
+ | |||
+ | == GTK+ hello world == | ||
+ | |||
+ | 以下给出 Linux 下用 GTK+ 工具包写的hello world. | ||
+ | |||
+ | #include <config.h> | ||
+ | |||
+ | #include <gtk/gtk.h> | ||
+ | |||
+ | /* | ||
+ | * 点击窗口关闭的回调函数,它将处理destroy信号,使gtk循环退出 | ||
+ | */ | ||
+ | static void on_destroy (GtkWidget * widget, gpointer data) | ||
+ | { | ||
+ | gtk_main_quit (); | ||
+ | } | ||
+ | |||
+ | int main (int argc, char *argv[]) | ||
+ | { | ||
+ | GtkWidget *window; | ||
+ | GtkWidget *label; | ||
+ | |||
+ | gtk_init (&argc, &argv); | ||
+ | |||
+ | /* 创建一个顶层的主窗口 */ | ||
+ | window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | ||
+ | |||
+ | /* 设定主窗口内部边缘空白 */ | ||
+ | gtk_container_set_border_width (GTK_CONTAINER (window), 20); | ||
+ | |||
+ | /* 设定标题 */ | ||
+ | gtk_window_set_title (GTK_WINDOW (window), PACKAGE " " VERSION); | ||
+ | |||
+ | /* 设定默认的窗口大小 */ | ||
+ | gtk_window_set_default_size (GTK_WINDOW (window), 200, 50); | ||
+ | |||
+ | /* 设定窗口上的图标 */ | ||
+ | gtk_window_set_default_icon_from_file (PIXMAPS_DIR "/hello-icon.gif", | ||
+ | NULL); | ||
+ | |||
+ | /* | ||
+ | * 将主窗口的关闭按钮会发出的destroy信号连接到回调函数on_destroy上. | ||
+ | * 让on_destroy来处理. | ||
+ | */ | ||
+ | g_signal_connect (G_OBJECT (window), "destroy", | ||
+ | G_CALLBACK (on_destroy), NULL); | ||
+ | |||
+ | /* 创建一个标签 */ | ||
+ | label = gtk_label_new ("Hello, World"); | ||
+ | |||
+ | /* 将标签放入到主窗口中 */ | ||
+ | gtk_container_add (GTK_CONTAINER (window), label); | ||
+ | |||
+ | /* 显示窗口内的所有控件 */ | ||
+ | gtk_widget_show_all (window); | ||
+ | |||
+ | /* 开始gtk循环 */ | ||
+ | gtk_main (); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | == 优秀的GTK+应用软件 == | ||
+ | |||
+ | * Geany,代码编辑器 | ||
+ | * GIMP,类似于Photoshop的图像处理程序 | ||
+ | * Inkscape,类似于Illustrator、CorelDraw的矢量图形绘制工具 | ||
+ | * Pidgin,支持多种协议(IRC、Gtalk、Yahoo Talk、MSN、QQ等等)的聊天工具 | ||
+ | |||
==安装步骤== | ==安装步骤== | ||
2009年5月3日 (日) 21:56的版本
目录
常用widget toolkits的分类
GTK
GTK+简介
GTK+最初是GIMP的专用开发库,后来发展为Unix-like系統下开发图形界面的应用程序的主流开发工具之一。GTK+是自由软件,并且是GNU计划的一部分。GTK+ 的许可协议是 LGPL。
编程语言
GTK+使用C语言开发,但是其设计者使用面向对象技术。 也提供了 C++(gtkmm)、Perl、Ruby、Java 和 Python(PyGTK)绑定,其他的绑定有 Ada、D、Haskell、PHP 和所有的 .NET 编程语言。
与其他很多部件工具包不同,GTK+ 并不基于Xt。这一决策优劣互见:优点是 GTK+ 可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为 X11 定制的X资源数据库。
Glade 是一个界面设计工具,但是它也包含了一种描述 GUI 界面的 XML 语言,它和 libglade 一起工作就可以直接使用 GTK 和 GNOME 控件;新的Glade-3 不再直接支持生成编程语言源代码。
外观感觉
由提供的不同的显示引擎使得终端用户可以定制外观和感觉。目前已经有一些可以模仿其他流行的平台或者工具包(例如Windows 95、Motif、Qt或者NEXTSTEP)的引擎。
发展历史
自GTK+1.0最早由1998年建立来,发行了诸多版本,目前最新版本为2.16. GTK+2.0 继承了 GTK+1.0 的所有特性,并在此基础上增加了其他一些特性,如改进的字体渲染工具包 Pango,主题引擎,辅助工具包, 完全移植到Unicode-8,以及更加灵活的 API (应用程序接口).然而 GTK+2.0 与 1.0 不兼容,所以需要程序自己移植.
Ridley项目将在未来的版本中融合一些函数库,包括libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel and gtkglext.目前GTK+ 3.0正在开发中.
GTK+ hello world
以下给出 Linux 下用 GTK+ 工具包写的hello world.
#include <config.h> #include <gtk/gtk.h> /* * 点击窗口关闭的回调函数,它将处理destroy信号,使gtk循环退出 */ static void on_destroy (GtkWidget * widget, gpointer data) { gtk_main_quit (); } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *label; gtk_init (&argc, &argv); /* 创建一个顶层的主窗口 */ window = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* 设定主窗口内部边缘空白 */ gtk_container_set_border_width (GTK_CONTAINER (window), 20); /* 设定标题 */ gtk_window_set_title (GTK_WINDOW (window), PACKAGE " " VERSION); /* 设定默认的窗口大小 */ gtk_window_set_default_size (GTK_WINDOW (window), 200, 50); /* 设定窗口上的图标 */ gtk_window_set_default_icon_from_file (PIXMAPS_DIR "/hello-icon.gif", NULL); /* * 将主窗口的关闭按钮会发出的destroy信号连接到回调函数on_destroy上. * 让on_destroy来处理. */ g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (on_destroy), NULL); /* 创建一个标签 */ label = gtk_label_new ("Hello, World"); /* 将标签放入到主窗口中 */ gtk_container_add (GTK_CONTAINER (window), label); /* 显示窗口内的所有控件 */ gtk_widget_show_all (window); /* 开始gtk循环 */ gtk_main (); return 0; }
优秀的GTK+应用软件
* Geany,代码编辑器 * GIMP,类似于Photoshop的图像处理程序 * Inkscape,类似于Illustrator、CorelDraw的矢量图形绘制工具 * Pidgin,支持多种协议(IRC、Gtalk、Yahoo Talk、MSN、QQ等等)的聊天工具
安装步骤
QT
相关介绍
英文维基百科之"qt"词条 http://en.wikipedia.org/wiki/Qt_(toolkit)
安装步骤
c#
相关介绍
英文维基百科之"MonoDevelop"词条 http://en.wikipedia.org/wiki/MonoDevelop
安装步骤
WxWidgets
相关介绍
英文维基百科之"WxWidgets"词条 http://en.wikipedia.org/wiki/Wxwidget
安装步骤
相关链接
英文维基百科之 “List of widget toolkits” http://en.wikipedia.org/wiki/List_of_widget_toolkits#Based_on_C_or_C.2B.2B_.28including_bindings_to_other_languages.29