GTK主题教程
- 格式:pdf
- 大小:5.16 MB
- 文档页数:55


glade3开发gtk程序入门教程
2009-11-29 01:24
Gnome下已开发出了Glade这一应用软件,它是传统界面设计工具Gtk/Gdk的扩展,能满足基于Gtk+库的图形用户界面可视化开发的基本需求。
一、Glade简介
如果有一种软件能将图形界面的设计及时地展现于开发人员的面前,而且在设计完后能直接看到界面的外观效果,这样就使程序员的主要精力集中于应用程序核心功能的开发上,这就是所谓的可视化编程思想。
在Windows环境下,这种可视化的集成开发环境已有许多成熟的产品,如VC++、VB、PB、Delphi、C++Bulider等。基于 Linux 操作系统的软件并不丰富,但绝非一片空白,例如Borland公司推出的Kylix。目前Gnome下已开发出了Glade这一应用软件,它是传统界面设 计工具Gtk/Gdk的扩展,能满足基于Gtk+库的图形用户界面可视化开发的基本需求。
Glade可为你生成界面代码,基本过程如下:
1.让Glade设计出界面元素,设置界面元素属性,为构件的信号设置回调函数;
2.将其存为XML格式,观察并修改不符合要求的部分;
3.编写应用其它部分代码,并在应用中载入Glade文件,编译C代码生成执行文件。
这种模式使设计界面与其它部分代码完全分开,并且有可能做到在对界面进行改动后不必对应用进行编译。图形用户界面设计小组可不必关心应用程序的运行细 节,同时编程人员也可以把他们的时间用于其它方面,而不需为界面的修改重复编写大量烦琐的Gtk+函数。这种分工开发的形式符合软件工程的要求,对GUI 软件的开发也更方便。
二、使用Glade的预备条件
在学习使用Glade之前,我们假设你已对Linux操作系统的基本运用有初步了解、熟悉rpm包或gzip包的处理 命令、对C语言有一定的了解,并熟悉消息处理编程机制。以上基础是使用Glade的必备知识,如果读者在以上某些方面尚存不明之处可先查阅相关资料。为了 能更灵活地使用Glade开发应用,用户最好能熟悉gcc编译器,掌握make文件的编写规则。
GTK+图形界面编程—计算器的实现 第1页 共22页
目录
1引言 ....................................................................................................................................... 2
1.1课题背景 ............................................................................................................................................................................2
1.2课程设计目的....................................................................................................................................................................2
1.3课程设计任务....................................................................................................................................................................3
2系统需求分析 ....................................................................................................................... 3
GTK+2.0-----构件定位
GTK+2.0 2008-12-13 10:25:20 阅读263 评论0 字号:大中小 订阅
构件的显现、映射和显示
构件可以按它们是否有G d k Wi n d o w窗口分类。有两种G t k +构件,一种有一个相关联的G d k Wi n d o w窗口,另一种没有。大多数构件都有一个相关联的G d k Wi n d o w窗口,构件就绘制在这个窗口上。这里的G d k Wi n d o w窗口和G t k +里的G t k Wi n d o w窗口是不一样的。G d k Wi n d o w不是一个用户可见的对象,而是一个X服务器用于划分屏幕的抽象概念。一个G d k Wi n d o w窗口,对X服务器给出了关于将要显示的图形的结构信息。因为X窗口系统是网络透明的,有可能X窗口的显示位置和X服务器不在同一台机器上,这样有助于减少网络流量。G t k Wi n d o w是一个窗口构件,它是一个用户可见的对象。
还有一些构件,比如说G t k L a b e l构件,没有与之相关联的G d k Wi n d o w;它们被称为“无窗口构件”,并且是相对轻量级的。没有相关联窗口的构件绘制在它的父构件的G d k Wi n d
o w窗口上。一些操作,例如捕获一个事件,要求有一个G d k Wi n d o w窗口,因此不能在无窗口构件上做这些操作。
构件要经过一系列与它们的G d k Wi n d o w相关的状态:
? 如果一个构件相应的G d k Wi n d o w被创建出来,称为该构件被显现( r e a l i z e)。用g t k _ w i d g e t _ r e a l i z e ( )函数显现一个构件,用g t k _ w i d g e t _ u n r e a l i z e ( )函数反显现(u n r e a l i z e d)构件。因为X窗口必须有一个父窗口,如果一个构件已经显现,它的父窗口也必然已显现。
用 GTK 来写 Hello World
好,现在来写一个只有一个按钮构件的程序,这是一个标准的 GTK Hello World。
#include
/* 这是一个回调函数。data 参数在本示例中被忽略。
* 后面有更多的回调函数示例。*/
void hello( GtkWidget *widget,
gpointer data )
{
g_print ("Hello World\n");
}
gint delete_event( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
/* 如果你的 "delete_event" 信号处理函数返回 FALSE,GTK 会发出
"destroy" 信号。
* 返回 TRUE,你不希望关闭窗口。
* 当你想弹出“你确定要退出吗?”对话框时它很有用。*/
g_print ("delete event occurred\n");
/* 改 TRUE 为 FALSE 程序会关闭。*/
return TRUE;
}
/* 另一个回调函数 */
void destroy( GtkWidget *widget,
gpointer data )
{
gtk_main_quit ();
}
int main( int argc,
char *argv[] ) {
/* GtkWidget 是构件的存储类型 */
GtkWidget *window;
GtkWidget *button;
/* 这个函数在所有的 GTK 程序都要调用。参数由命令行中解析出来并且送到