Gtk(GIMPtoolkit)+使用C语言开发的,采用了面向对象的技术,跨平台的图形工具包,LGPL,Gtk+提供所有流行的语言的接口:C++,Perl,Python,Java,ObjectiveC,被Gnome选中,优势:1.现代,开发和维护积极2.提供了广泛的选项,可以将工作扩展到尽可能多的人,3.简单易用4.自由软件,自由的开放源码许可。5.设计良好,灵活而可扩展。
GTK+的组成:GDK,gdk-pixbuf,Glib和Pango
GTK+使用Glib和GDK(GIMPDrawingkit)系列开发库,Glib定义了数据类型,提供错误处理和内存管理方面的函数;GDK是本地图形化API和GTK+之间的一个过渡层。
1)GDK和gdk-pixbuf,是GIMP的开发基础,GTK+建立在GDK和gdk-pixbuf.GDK是对访问窗口的底层函数(X系统中Xlib)的封装,gdk-pixbuf-用户客户端图像处理的库。GTK+面向对象的应用程序接口。
2)Glib:包括一些和图形无关的常规功能,数据结构之类的,基本功能+GObject对象系统=Glib,用来开发不需要图形界面的程序,
3)Pango:Gtk使用Pango库来处理国际化文字输出
备注:本人机器配置Ubuntu 12.04 & 联想Z460A
sudo apt-get install build-essential #这将安装gcc/g++/gdb/make 等基本编程工具
sudo apt-get install gnome-core-devel #这将安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件
sudo apt-get install pkg-config #用于在编译GTK程序时自动找出头文件及库文件位置
sudo apt-get install devhelp #这将安装 devhelp GTK文档查看程序
sudo apt-get install libglib2.0-doc libgtk2.0-doc #这将安装 gtk/glib 的API参考手册及其它帮助文档
sudo apt-get instal glade libglade2-dev #这将安装基于GTK的界面构造程序
备注:也些软件包可能不需要安装,需要具体问题具体分析
万恶的Helloworld之 GTK+版Helloworld。《Dreaming in Code》介绍说:”Hello world 程序一无所用,但是足以蛊惑人心;它鼓励新手,唤起了每个程序员心中乐观的一面。既然能让它(代指计算机)说话,就能让它做任何事!“
/*Program: helloworld.c -- Test gtk+ *commandline:gcc helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0` */ #include<gtk/gtk.h> void hello(GtkWidget *widget,gpointer data) { g_print("Hello Ubuntu!\n"); } gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data) { g_print ("delete event occurred\n"); return(TRUE); } void destroy(GtkWidget *widget,gpointer data) { gtk_main_quit(); } int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); window=gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL); gtk_signal_connect(GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL); gtk_container_set_border_width(GTK_CONTAINER (window), 10); button = gtk_button_new_with_label("Hello Ubuntu!"); gtk_signal_connect(GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL); gtk_signal_connect_object(GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (gtk_widget_destroy),GTK_OBJECT (window)); gtk_container_add(GTK_CONTAINER (window), button); gtk_widget_show(button); gtk_widget_show(window); /*显示一个窗口*/ gtk_main(); /*进入主循环*/ return(0); }编译命令:
gcc helloworld.c -o helloworld `pkg-config --cflags --libs gtk+-2.0`
嫌麻烦的话,可以把命令写到一个shell文件中,省得每次都要在命令行里敲。这里我写了一个shell文件:
#!/bin/bash build_argument=$(pkg-config --cflags --libs gtk+-2.0) cc -o helloworld helloworld.c ${build_argument}运行截图:
单击Hello Ubuntu!后窗口会被关闭并在终端中输出: Hello Ubuntu!
至此,是不是有种收获感,有种要让计算机做任何事的冲动。哈哈,这就是神奇的helloworld。
[1] GTK安装步骤:http://www.cnblogs.com/zhangzhi/archive/2009/09/22/1572120.html
[2] GTK与QT安装和配置: http://wiki.ubuntu.com.cn/Gtk%E4%B8%8EQt%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE