gtk简易教程.docx

上传人:b****2 文档编号:2465462 上传时间:2022-10-29 格式:DOCX 页数:19 大小:33.13KB
下载 相关 举报
gtk简易教程.docx_第1页
第1页 / 共19页
gtk简易教程.docx_第2页
第2页 / 共19页
gtk简易教程.docx_第3页
第3页 / 共19页
gtk简易教程.docx_第4页
第4页 / 共19页
gtk简易教程.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

gtk简易教程.docx

《gtk简易教程.docx》由会员分享,可在线阅读,更多相关《gtk简易教程.docx(19页珍藏版)》请在冰豆网上搜索。

gtk简易教程.docx

gtk简易教程

大家一起用gtk编程1(开始与热身)

转贴请注明出处:

作者:

lvjinhua@

2006.09.20

∙写在最前面

笔者写做本文的目的,主要是为初学GTK编程的新手们提供一个能够快速上手的学习档案,能够通过自己将所有的代码输入并编译,以达到学习的目的。

同时,也希望它成为一个参考手册,希望GTK中的每一个API都能在本文中找到相应的示例。

笔者将尽力保证所有的代码都是最短小的,这样才能保证大家都有足够的动力去手工输入它。

由于笔者时间及精力有限,不能一次将所有内容呈现给所有读者,因此拟定了一个计划:

每天更新一个章节的内容,在笔者的Blog上进行连载,同时会不断地对以前的内容进行修改和完善,因此为了保证大家能够读到最新的内容,请随时关注笔者的Blog:

起笔的日子:

2006.09.20

∙为什么是GTK?

为什么不是GTK?

笔者不想花费太多的口水去辨证为什么选择GTK而不是其它的东西;任何技术都没有好坏之分,只有使用它的人有能力的强弱之别;笔者认为比较明智的做法是:

多编些程序,少做些争论。

∙1、GTK简介

GTK(GIMPToolkit)是一套用于创建图形用户界面的工具包。

它遵循LGPL许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。

当前,GTK已经被成功地应用到了大量的自由软件及商业软件中,已经取得了很大的成功。

GTK的创建者:

   PeterMattis:

petm@xcf.berkeley.edu

   SpencerKimball:

spencer@xcf.berkeley.edu

   JoshMacDonald:

jmacd@xcf.berkeley.edu

当前,GTK主要由几大组件构成:

*Gtk+:

GTK的主要构件,包括所有的图形控件及大量实用的API。

*Glib:

包含一些标准函数的替代函数,以及一些处理链表等数据结构的函数等。

这些替代函数被用来增强GTK的可移植性,同时提供libc的对应函数的增强版本。

*Pango:

该组件用来处理国际化文字输出。

∙2、预备

工欲xxx,必先利其器!

在进行实际的程序设计之前,应该先明确一些主要的开发工具。

1)GTK是跨平台的,它能够运行于Linux/Unix/Windows/MacOS及嵌入式系统,但这不是本文所关注的重点;实际上,只要按照GTK所提供的API去编程,基本上在一个平台上设计的程序,在其它平台可以不加任何修改而成功地进行编译。

笔者使用的操作系统是:

Dubuntu-6.06,本文中所有的示例代码将在该平台上进行开发并编译运行;当然,这并不代表不能使用其它操作系统,只要安装了GCC编译环境、GTK/Glib/Libc开发库,基本上就能成功地编译运行本文中的所有示例,现就UbuntuDapper发行版GTK开发环境安装方法简述如下:

sudoapt-getinstallvim                       #是的,笔者使用vim来编写代码,当然您可以使用任何自己喜欢的编辑器

sudoapt-getinstallbuild-essential      #这将安装

sudogcc/g++/gdb/make等基本编程工具

sudoapt-getinstallgnome-core-devel #这将安装libgtk2.0-devlibglib2.0-dev等开发相关的库文件

sudoapt-getinstallpkg-config           #用于在编译GTK程序时自动找出头文件及库文件位置

sudoapt-getinstalldevhelp                #这将安装devhelpGTK文档查看程序

sudoapt-getinstalllibglib2.0-doclibgtk2.0-doc

                                                   #这将安装gtk/glib的API参考手册及其它帮助文档

sudoapt-getinstalgladelibglade2-dev#这将安装基于GTK的界面构造程序

当然,其它的Linux发行版可参考相应的文档进行开发环境的搭建,各大Linux论坛是个不错的咨询地:

www.linuxsir.org,www.linuxfans.org

如果有热心的同仁能提供其它操作系统GTK开发库的安装方法,欢迎提供给我笔者,笔者将在这里分享给大家!

先行谢过了。

∙3、Hello,Dubuntu!

嗯,早就急不可待了,让我们开始我们的第一个程序吧!

本程序的主要功能:

显示一个窗口,并在窗口的标题栏显示字符串"Hello,Dubuntu!

"

源代码如下所示,编译成功后,可以通过命令行输入./hello_dubuntu来运行此程序,显示效果如下:

hello_dubuntu.c 

#include

/*一般可以在/usr/include/gtk-2.0下找到上边的头文件

 *上边的头文件的作用是包含进行GTK编程所有可能用到的头

 *文件,包括glib.h等 */

int

main(intargc,char*argv[])

{

       GtkWidget*window;

       //GtkWidget是绝大部分可视组件的的基类

       gtk_init(&argc,&argv);

       //对程序传入的命令行参数进行标准化处理

       window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

       //创建窗口(200x200大小)

       gtk_window_set_title(GTK_WINDOW(window),"Hello,Dubuntu!

");

       //设置窗口标题

       gtk_widget_show(window);

       //显示窗口

       gtk_main();

       //Gtk程序主循环

       return0;

编译程序:

gcchello_dubuntu.c-ohello_dubuntu`pkg-config--cflags--libsgtk+-2.0` #注意:

"`"不是普通的单引号"'",而是同"~"在一起的那个符号!

是的,上边的程序非常简单,除了注释就没几条语句了!

但它确实是一个GTK程序,虽然它还不够完善,缺少信号处理,因此当您单击“关闭”按钮关闭此窗口后,实际上程序还在运行。

1)编译程序的命令行:

如上,使用GNUC语言编译器gcc,其中pkg-config--cflags--libsgtk+-2.0用于生成gcc编译及链接程序时所必须的头文件及库文件列表,在笔者的机器上运行该命令得到的结果如下:

命令:

pkg-config--cflags--libsgtk+-2.0

输出:

-I/usr/include/gtk-2.0-I/usr/lib/gtk-2.0/include-I/usr/include/atk-1.0-I/usr/include/cairo-I/usr/include/pango-1.0-I/usr/include/glib-2.0-I/usr/lib/glib-2.0/include -lgtk-x11-2.0-lgdk-x11-2.0-latk-1.0-lgdk_pixbuf-2.0-lm-lpangocairo-1.0-lfontconfig-lXext-lXrender-lXinerama-lXi-lXrandr-lXcursor-lXfixes-lpango-1.0-lcairo-lX11-lgobject-2.0-lgmodule-2.0-ldl-lglib-2.0

2)大家如果对某个GTK标准API定义,或者某个类型/常量定义不清楚,可以在devhelp帮助程序中进行搜索,以查看某参数说明。

3)gtk_init(&argc,&argv)函数用于对传入进来的标准命令行参数进行解析并处理,这些标准命令行参数为(即:

运行我们的程序时,通过命令行传入的下列参数会被自动处理):

∙--gtk-module

∙--g-fatal-warnings

∙--gtk-debug

∙--gtk-no-debug

∙--gdk-debug

∙--gdk-no-debug

∙--display

∙--sync

∙--name

∙--class

4)gtk_widget_show(window)用于告诉程序,我们的window构件已经准备完成,可以显示了。

5)gtk_main(),程序将会运行到此,然后等待“事件”的发生;当有事件发生后,将调用此事件对应的回调函数,当回调函数执行完毕,又会重新回到gtk_main(),等待新的“事件”发生。

6)宏GTK_WINDOW(window)是用于进行类型检查及转换,它将把一个可以转化为GtkWindow的构件强制转换为GtkWindow类型后传递给函数。

好了,hello_dubuntu.c理解了吗?

什么!

没有理解!

不要紧,我们下边还会有很多这样的小例子,再多输入几个就会理解了,相信我!

下集预告:

将在窗口中添加一个按钮,并为按钮关联"clicked"事件,以使单击按钮后会有一些返回。

大家一起用gtk编程2(添加按钮和连接事件)

转贴请注明出处:

作者:

lvjinhuaatgmaildotcom

2006.09.20

∙4、加入按钮和事件处理函数

上回说道,咱们使用GTK创建了一个最简单的GTK程序,简单到只能显示一个200x200点大小的空白窗口,并在标题栏显示“Hello,Dubuntu!

”的字样!

虽然简单,但确实是个不错的开端,好了,咱们现在在窗口中添加一个按钮。

运行效果:

代码:

hello_dubuntu2.c 

/*本例的主要目的是在窗口中显示一个按钮,

 *并且单击按钮退出程序

 */

#include

void

cb_button(GtkWidget*widget,gpointerdata)

{//按钮"button"的回调函数

       gtk_main_quit();

}

int

main(intargc,char*argv[])

{

       GtkWidget*main_window;//主窗口对象

       GtkWidget*button;             //将要放置到主窗口中的按钮对象

       gtk_init(&argc,&argv);

       main_window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

       gtk_window_set_title(GTK_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1