用Gtk 开发Linux上的GUI应用软件

文章作者 100test 发表时间 2007:03:14 16:54:01
来源 100Test.Com百考试题网


一般一个容器构件只能容纳一个构件,如果要在一个容器构件中安排多个子构件,可先将多个子构件放入一个组合框或组合表构件内,再将这个组合框或组合表构件放入该容器构件。

一、如何建立Gtk 应用

1.基本概念
在Linux上开发GUI应用软件,我们通常利用Gtk 库。为了深入了解Gtk 的应用,我们首先要明确几个概念。
(1) 构件(widget)的概念
在Gtk 库里的窗口、选单和按钮等应用实体,我们称之为构件(widget)。构件具有面向对象的特征,其具体结构由Gtk 库定义,它对运用构件的程序员来说是透明的,除非你想创建自己的构件。在对构件进行安排时,我们只需要关心构件的处理函数,这样做的目的就是要对应用程序员屏蔽构件的细节,使程序员将更多的精力集中在应用功能上。
(2) 容器(container)的概念
构件主要分为两大类,即容器类(container)和杂类(miscellaneous)。大多数构件属容器类,它们可以像容器一样容纳其它的构件。在安排构件时常常要遵循一个规则:除了组合框(box)和组合表(table)这两种构件外,其它的容器类构件都只能容纳一个构件。杂类构件比容器类构件简单,但它不能容纳其它构件。
(3) 消息及回呼函数的概念
程序必须能对用户的操作作出反应,在基于GUI的程序设计中,“消息”或“信号”是必要的。用户点击选单、各种按钮、输入用户数据、查询运行结果和拖放,都会产生消息或信号。信号可能需要由软件来加以处理,这时程序员就需要编写消息回呼函数。消息或信号的概念类似于Windows中的事件。在Gtk 中经常产生各种信号,用户产生的大多数信号被忽略,只有程序关心的信号,程序中才有相应的处理函数被调用。程序员要登记信号与处理函数之间的关系,告诉 Gtk 哪些信号或事件是程序所关心的。
2. 构件(widget)的运用
在调用Gtk 的构件时,一般进行如下操作步骤:
(1) 包含所调用构件的头文件
头文件通常存放在/usr/include/gtk/目录下,该文件里有对构件的定义及对构件的操作函数,在我们使用构件时,可以经常在这个目录下查阅构件函数的调用格式或参数。我们不必让所有构件包含头文件,因为构件的头文件已包含在该目录下一个名为gtk.h的文件里,包含这个文件就包含了所有构件的头文件。一般系统将编译的包含目录指定为/usr/include,所以我们只需写明 include 即可。
(2) 声明构件
声明构件的过程是为了符合C语言中先声明后使用的原则。一般在程序开始要声明构件结构的指针,这就为构件分配了地址。
(3) 构件指针的初始化
调用构件的创建函数,对构件的属性进行调整(大小、位置和状态等),接着显示构件,这一点不能忽略,如果只创建了构件却忘了显示(gtk_widget_show),在应用时,用户就不能看到构件,也就无法对构件进行操作了。
(4) 安排构件的位置与层次关系
构件之间往往是容纳与被容纳的关系,也就是说容器内还有容器,层层嵌套。要记住一般一个容器构件只能容纳一个构件,如果要在一个容器构件中安排多个子构件,可先将多个子构件放入一个组合框或组合表构件内,再将这个组合框或组合表构件放入该容器构件。注意父容器构件要先于子容器构件创建,父容器构件的显示要在子容器构件的显示之后。
(5) 编写事件处理函数
构件的头文件中定义了构件能响应的事件(消息),但并非所有的消息在应用中都是程序所关心的,对于程序应当响应的事件,程序员要写出事件处理函数。

相关文章


K7N2G的nforce2芯片组redhat9安装实例
在RedHatAS3上配置ntp时间服务器和客户端
用Gtk 开发Linux上的GUI应用软件
在RedHat9上安装D-linkDWL-610无线网卡驱动
如何在linux中设置透明代理
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛