1、1习题和答案第 1 章 Linux 概述 .1第 2 章 shell 及常用命令 .4第 3 章 vi 编辑器的使用 .7第 4 章 X Window 系统的使用 .9第 5 章 Linux 系统的常用软件 .11第 6 章 硬件管理 11第 7 章 网络基本配置 12第 8 章 常用网络服务的配置和使用 15第 9 章 系统管理与监控 19第 10 章 Linux 系统的安全管理 .21第 11 章 shell 程序设计 .24第 12 章 gcc 的使用与开发 .26第 13 章 gtk+图形界面程序设计 27第 14 章 Qt 图形界面程序设计 .28第 15 章 集成开发环境 KDev
2、elop 的使用 31第 1 章 Linux 概述1 什么是 Linux?Linux 是一套免费使用和自由传播的类 UNIX 操作系统,源代码开放,能运行于各类硬件平台,包括 Intel x86 系列和 RISC 处理器。这个系统是由世界各地成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的UNIX 兼容产品。2 Linux 有哪些特性?(1)开放性(2)多用户(3)多任务 (4)良好的用户界面 (5)设备独立性 (6)丰富的网络功能 (7)可靠的系统安全 (8)良好的可移植性3 Linux 与 Windows 操作系统的主要区别是什么? (1)从发
3、展的背景看,Linux 是从一个比较成熟的操作系统发展而来的,而其他操作系统,如 Windows 等,都是自成体系,无对应的相依托的操作系统(2)从使用费用上看,Linux 是一种开放、免费的操作系统,Windows 是封闭的系统,需要有偿使用。(3)Linux 上丰富的应用软件也是自由的,而在 Windows 下,几乎所有的软件都有独立的版权,需要购买使用,即使某些软件可以免费使用,也一般不提供其源代码,更不用说由用户修改扩充其功能了。(4)Windows 对硬件配置要求高,而 Linux 在低端 PC 系统上仍然可以流畅运行4 Linux 与 Unix 的共同点与不同点是什么?共同点:由于
4、 Linux 是从 Unix 发展来到,它遵循 Unix 开放标准,基本支持同样的软件、程序设计环境和网络特性,可以说 Linux 是 UNIX 的 PC 版本,Linux 在 PC 机上提供2了相当于 UNIX 工作站的性能。与商用 Unix 的不同点有:1)Linux 是免费软件,用户可以从网上下载,而商用的UNIX 除了软件本身的价格外,用户还需支付文档、售后服务费用;2)Linux 拥有 GNU 软件支持,Linux 能够运行 GNU 计划的大量免费软件,这些软件包括应用程序开发、文字处理、游戏等方面的内容;3)Linux 的开发是开放的,任何志愿者都可以对开发过程做出贡献;而商用 U
5、NIX 则是由专门的软件公司进行开发的。与自由 Unix 的不同点:1)在组织方式上,FreeBSD 由它的核心团队(core team)的领导,他们负责原始程序的开发与维护。有 core team 的优点是原始程序会有一致性,会有组织的被更新,但是整个系统的活力操纵在 core team 手中,缺乏活力。Linux 没有核心团队,在 Linus 的主导下来自世界各地的爱好者都可以发布自己的 patch,缺点是源代码杂乱无章且可能会相互冲突。2)在发展方向上,FreeBSD 的核心团队将主要精力投入在 UNIX 自身的风格和特点上。Linux 通常会首先加入商品化系统上的各种东西,比如新的硬件
6、驱动、samba 等。因此,从易用和可用上讲,Linux 更容易上手和使用。3)在系统核心功能上二者区别不大,但在 Linux 系统上,几乎可是找到任何需要的功能4)在系统的性能上,据专家分析,FreeBSD 在网络性能、软件移植性和系统规范化上略胜一畴,而在硬件支持、磁盘 IO 操作等方面 Linux 略强一些。5 什么是 GNU 软件,什么是 GPL 和 LGPL?GUN 项目主要由自由软件基金资助的一个项目,目标是开发一个自由的、UNIX 类型的操作系统,称为 GNU 系统。GNU 是“GNUs Not UNIX”的首字母的递归缩写,目前使用Linux 内核的各种 GNU 操作系统应用非
7、常广泛。所有的 GNU 软件和派生工作均遵循 GNU 通用公共许可证,即 GPL。GPL 和软件是否免费无关,它主要目标是保证软件对所有的用户来说是自由的。GPL 通过如下途径实现这一目标: 它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。 它提醒每个用户,对于该软件不提供任何形式的担保。 如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。 GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。 遵照
8、GPL 的软件并不是可以任意传播的,这些软件通常都有正式的版权,GPL 在发布软件或者复制软件时声明限制条件。但是,从用户的角度考虑,这些根本不能算是限制条件,相反用户只会从中受益,因为用户可以确保获得源代码LGPL 允许用户在自己的应用程序中使用程序库,即使不公开自己的源代码。但是,要求用户必须能够获得在应用程序中使用的程序库的源代码,并且允许用户对这些程序库进行修改。遵循 LGPL 的一种方法是,随应用程序一起发布目标代码以及可以将这些目标程序和受LGPL 保护的程序库链接起来的 makefile 文件。遵循 LGPL 的另一种比较好的方法是使用动态链接6 什么是 Linux 的内核版本和
9、发行版本?内核版本指的是在 Linux 的创始人 Linus 领导下的开发小组开发出的系统内核版本号,3Linux 内核的版本号主要由三部分构成:主版本号、次版本号、次次版本号。主版本号表示系统内核有大的改动,次版本号表示系统内核有小的改动,开始支持一些新的特性,一般表示系统内核对新的硬件支持进行了改进。如果更改之后还处于测试阶段,那么次版本号为奇数,如果已经过了测试阶段,改动是成功的,那么次版本号是偶数。次次版本号表示系统有一点儿改动,对内核影响不大。一些组织或公司将 Linux 内核与应用软件和文档包装起来,并提供安装界面、系统配置与管理工具,这样就构成了一种发行版本。发行版本的版本号随发
10、行者的不同而不同,与系统内核的版本号是相互独立的。7 你知道哪些主要的 Linux 发行版本?Red Hat Linux, Red Flag Linux, Blue Point, TurboLinux, Suse Linux, Debian GNU/Linux, Mandrake Linux 等。8 什么是内核,它的作用是什么?内核是系统的心脏,是运行程序和管理磁盘、打印机等硬件设备的核心程序。它的总有是管理 CPU、内存和外设。9 什么是 shell,shell 的作用是什么?shell 是系统的用户界面,它实际上是一个命令解释器,它解释由用户输入的命令并把它们送到内核,把执行的结果显示给用
11、户。不仅如此,shell 有自己的编程语言,允许用户编写由 shell 命令组成的程序。10 在安装 Linux 之前应该如何获取系统的硬件资料?在安装 Linux 之前,先确定你的计算机的硬件是否能被 Linux 所支持。需要关注的硬件包括显卡、声卡、网卡、打印机、鼠标等。要获知相应硬件的型号,可以在 Windows 下查看,也可以通过设备本身的标志查看。检查有没有相应的设备驱动程序。关注硬盘分区、大小等信息。如果声卡、显卡的型号不能识别,一般可以模拟成标准硬件来使用。11 Linux 有几种安装方法?1) 从光盘安装2) 从硬盘安装12 Fedora10 在安装时提供哪几种方式建立 Lin
12、ux 的分区?Fedora10 在安装时提供了五个关于分区的选项:在选定磁盘上删除所有分区并创建默认分区结构:如果想在磁盘上仅安装一个 Fedora系统,可以选择这个选项。特别注意,如果选择了这个选项,那么该磁盘中已经安装的所有其他系统将被破坏。在选定驱动器上删除 Linux 分区并创建默认的分区结构:如果系统中存在任何 Linux分区,选择这个选项可以删除所有的 Linux 分区,然后在腾出的空闲分区中安装 Fedora 系统。选择这个选项不会影响或者修改已经分配给其他非 Linux 操作系统占用的分区空间。重新定义现有分区大小并在剩余空间中创建默认布局:该选项允许调整现有分区的大小,然后自
13、动创建默认的分区结构。使用选定驱动器中的空余空间并创建默认的分区结构:保留现有分区中的数据,仅在空闲空间上创建新分区。建立自定义的分区结构:在前几个选项中,系统根据驱动器的大小以及内存大小自动创建分区布局。本选项则允许用户自己定义分区结构。选择该选项后,将打开分区管理窗口,在这里可以方便地创建、编辑、删除分区。13 安装 Linux 至少需要哪两个分区?还有哪些常用分区?至少有/和 swap 分区。其它常用分区有:/bin /home /usr /var /usr/local /tmp 等14 安全专家建议,安装 Linux 时,最好为主要的目录建立单独的分区,试分析这样4做的优点。由于每个分
14、区指定了自己的大小,当某个分区的数据超过自己的大小限制时,不会挤占其它分区的空间。15 swap 交换分区的作用是什么?它实际上是用硬盘实现虚拟内存,即当系统内存使用率比较高的时候,内核会自动使用 swap 分区来模拟内存。16 安装 Linux 都需要收集哪些信息?安装过程所使用的语言、键盘鼠标类型、安装类型、磁盘分区、系统语言、安装软件包。17 如何在安装时选择安装某个软件?在安装过程中,安装程序将显示软件选择界面。默认情况下,Fedora 安装程序会自动安装一组适合桌面图形环境的软件。在该界面上,还可以选择软件安装所需的程序库。选择“现在定制”后点击【下一步】按钮,打开软件包定制界面。在
15、这里,可以对系统安装的软件进行更详细的定制。18 什么是运行级别?Linux 有几个运行级别?运行级别是指 Linux 的运行状态,Linux 系统有六种不同的运行级,这六种运行级分别为:0:停机1:单用户模式,就像 Win9X 下的安全模式。2:多用户,但是没有 NFS 3:完全多用户模式,标准的运行级4:保留,一般不用5:X Window 图形界面模式6:重新启动 19 如何更改默认启动级别?在配置文件/etc/inittab 文中,有一行文本“id: 5:initdefault: ”标志了 Linux的默认启动级别,5 表示默认进入 X Window 图形界面,如果把这里的数字改为 3,
16、则默认进入控制台界面。注意,不要把 initdefault 设置为 0 和 6,这两个级别是系统在关机和重启过程中自动使用的。20 如何登录和注销?登录分为图形界面登录和命令行登录,在提示用户名和口令时分别输入用户名和口令即可登录。要注销图形化环境,选择【系统/注销】命令,弹出注销确认对话框,或者按键,直接执行注销命令。输入命令 logout,则又回到登录界面,可以重新登录。21 如何安全关闭 Linux 系统?在图形界面下,选择【系统/关闭】命令,选择【关闭系统】按钮执行关闭命令,系统关闭自身所有进程。也可以在注销后出现的重新登录界面上选择【关闭】按钮来关闭系统。某些计算机会在关闭系统后自动
17、切断电源,如果计算机不这样做,那么,当看到“Power down.”消息后,便可以手工切断计算机的电源。可以在控制台执行 halt 命令、init 命令或者 shutdown 命令来关闭系统。第 2 章 shell 及常用命令1判断下列命题是否正确1)Linux 的文件名与命令不区分大小写。 ( ) 。2)$ls *和$ls *“*“的显示结果完全一致。 ()53)rm 和 rmdir 的作用一样,都是删除整个目录。 ()4)Linux 文件名的命名规则必须遵守 8.3 的格式。 ()2什么是 Linux 终端?Linux 终端又称为什么?Linux 终端也称为虚拟控制台,是 Linux 从
18、UNIX 继承来的标准特性。显示器和键盘合称终端,因为它们可以对系统进行控制,所以又称为控制台,一台计算机的输入输出设备就是一个物理的控制台。如果在一台计算机上用软件的方法实现了多个互不干扰独立工作的控制台界面,就是实现了多个虚拟控制台。Linux 终端的工作方式是字符命令行方式,用户通过键盘输入命令进行操作,可以通过 Linux 终端对系统进行控制。3默认情况下,Linux 有几个虚拟终端?如何在不同终端之间切换?如何在 x Window 与终端之间进行切换?通常情况下,Linux 默认启动六个虚拟终端。虚拟控制台的选择可以通过按下键和功能键(n=16)来实现。如果启动方式选择了直接启动 X
19、 Window,那么 X Window 在第七个虚拟终端上。在 X Window 图形操作界面中按(n=16)就可以进入控制台字符操作界面。在控制台操作界面里按即可回到刚才的 X Window。4什么是 shell?shell 在用户与操作系统之间的作用是什么?shell 是一个命令解释器,它可以用来启动、挂起、停止程序,还允许用户编写由shell 命令组成的程序。shell 是系统的用户界面,它提供了用户与内核进行交互的一种接口。它接收用户输入的命令并把它送入内核执行,把执行结果显示给用户。5什么是通配符?常用的操作通配符有哪些?Linux 系统中的通配符除了“*”和“?”以外,还可以使用“
20、” 、 “”和“-”组成的字符组模式,以便精确地扩充需要匹配的文件范围。通配符*:通配符*可以代表文件名中的任意字符或字符串。通配符*不能与单句点开头的文件名相匹配。以单句点开头的文件在 Linux 中是隐藏文件。通配符?:通配符?可以匹配任意一个字符。字符组模式:通配符“” 、 “”、 “-”用于构成字符组模式。 “”和“”将字符组括起来,表示可以匹配字符组中的任意一个。 “-”用于表示字符范围。例如abc表示匹配 a或者 b 或者 c,a-f表示匹配从 a 到 f 这个范围之中的任意一个字符。6什么是文件系统?什么是文件?在多数操作系统中都有文件的概念。文件是 Linux 用来存储信息的基
21、本结构,它是被命名(称为文件名)的存储在某种介质(如磁盘、光盘和磁带等)上的一组信息的集合。Linux 系统中有三种基本的文件类型:普通文件、目录文件和设备文件。在计算机系统中存有大量的文件,如何有效的组织与管理它们,并为用户提供一个使用方便的接口是文件系统的一大任务。Linux 系统通过目录将系统中所有的文件分级、分层组织在一起,形成了 Linux 文件系统的树型层次结构。以根目录 “/”为起点,所有其他的目录都由根目录派生而来。7Linux 系统文件命名有什么规定?文件名是文件的标识,它由字母、数字、下划线和句点组成的字符串来构成。Linux要求文件名的长度不超过 255 个字符。为了便于
22、管理和识别,用户可以把扩展名作为文件名的一部分,通常句点之后的部分为扩展名。扩展名对于将文件分类十分有用。8Linux 系统的目录/usr、/home、/bin、/dev/、/var、/etc/中主要存放什么文件?/usr 存放用户安装的软件,用户安装的软件一般位于此目录;/home 存放系统用户自身的数据;/bin 存放 shell 命令;/dev 存放系统设备的信息; /var 主要存放系统可变信息的内容,如日志、邮件、打印队列等;/etc 存放系统可执行文件。9如何使用 cat 命令将多个文件连接起来显示?6使用命令:cat file1 file2 .就可以将多个文件首尾相连显示在屏幕上
23、。10more 命令和 less 命令有什么区别?more 可将文件显示在屏幕上,但它每次只显示一页。显示文件时,按空格键可显示下一页,按键退出显示,键给出帮助信息;less 的作用与 more 十分相似,都可以用来浏览文本文件的内容,不同的是 less 允许使用者往回卷动以浏览已经看过的部份,同时 less 并不在一开始就读入整个文件,因此在遇上大型文件的时,会比较快。与 more 相比,less 的功能更加强大,在 less 命令执行时,可以使用的指令与 vi 编辑器的命令以及 more 的指令类似。11如何用复制、删除命令实现文件的移动?步骤如下:1)首先使用 cp 目录将文件从原目录拷
24、贝到目标目录;2)在原目录中删除原文件12如何使用 ls 命令查看隐藏文件信息?使用-a 选项将显示所有文件包括隐藏文件的信息,ls 默认将名称以“.”开头的文件或目录视为隐藏,不会列出;13如何递归地将当前目录下所有的 C 语言程序拷贝至 /home 目录中,要求如果有同名文件,则覆盖同名文件?执行命令 cp,并使用选项-rf,-r 表示若 source 中含有目录,则递归地将目录下的文件也依序拷贝至目的地。-f 表示若目的地已经有同名文件存在,则在复制前先予以删除再进行复制。14如何强制删除当前目录及其子目录下的所有 c 程序。执行命令:rm rf *.c15给出命令,在当前工作目录下的
25、A 目录中,删除名为 B 的子目录。若 B 删除后,A 目录成为空目录,则 A 也予删除。rmdir -p A/B16给出查找/usr 目录下大小超过 50k 并且最近 2 小时内被更新过的文件的命令。查找/usr 下大小超过 50k 的文件:find /usr/ -size 50k cmin -120 17如何使用命令完成把当前工作目录切换到/root 并显示是否切换成功?首先使用 pwd 命令查看切换之前的目录,然后执行命令 cd /root;最后使用 pwd 命令查看当前目录,看是否是/root,如果是表示切换成功。18给出命令将当前目录下的文件 file 的时间记录改成 2005 年
26、5 月 10 日 18 点 30 分。执行命令:touch -t 0505181830 file 或者命令 touch -d “6:30pm 05/10/2005“ file19如何执行 tar 命令对文件执行备份和恢复?备份:tar cvf xx.tar * 或者 tar czvf xx.tar.gz *恢复 tar cvf xx.tar 或者 tar czvf xx.tar.gz 20给出命令将当前目录下的所有 c 程序备份并为一个文件。Tar cvf xx.tar *.c 或者 tar czvf xx.tar.gz *.c21假设有一个 rpm 包的软件:software-1.2.3-1
27、.i386.rpm,简述软件的命名含义,并说明如何安装及如何查看是否已经安装?software-1.2.3-1 表示软件名称和版本,i386 表示该软件是为 386 体系结构机器编写编译的,rpm 表示该软件使用 rpm 软件包管理工具打包。安装命令为: rpm i software-1.2.3-1.i386.rpm7查看命令为:rpm q software-1.2.3-1.i386.rpm22下面是执行“ls l software”命令得到的信息,通过联机帮助,解释这些信息:第 1 个域表示文件的访问权限;第 2 个域表示硬链接的个数第 3 个域表示文件的所有者第 4 个域表示文件所属的群组
28、第 5 个域表示文件大小第 6 个域表示文件最近一次修改的时间最后一个域表示软件名称。第 3 章 vi 编辑器的使用1 vi 有几种工作模式,各工作模式之间如何进行转化?vi 有三种基本工作模式,分别是:命令模式(command mode) 、插入模式(insert mode)和底行模式(last line mode)三种模式之间的转换如下图。键 键 文 本 插 入 命 令 自 动 返 回 shel提 示 符 命 令 模 式 插 入 模 式 末 行 模 式 启 动 vi 退 出 vi 2 在 vi 中如何保存正在编辑的文件?在命令模式下,连按两次大写字母,若当前编辑的文件曾被修改过,则 vi
29、保存该文件后退出,返回到 shell;若当前编辑的文件没被修改过,则 vi 直接退出,返回到shell。在末行模式下,有几种命令可以保存文件:1) :w vi 保存当前编辑的文件,但并不退出 vi,而是继续等待用户输入命令。2) :w 把当前文件的内容保存到指定的文件 newfile 中,而原有文件保持不变。若 newfile 是一个已存在的文件,则 vi 在窗口的状态行给出提示信息:File exists (use ! to override)表示指定的文件已经存在,如果要替换原有内容,需要使用“!” 。3) :w! 把当前文件的内容保存到指定的文件 newfile 中,如果newfile
30、已经存在,则覆盖原有内容。3 有几种方法可以退出 vi 编辑器?在末行模式下,有四种方法可以退出 vi 返回到 shell:1) :q 系统退出 vi 返回到 shell。在用此命令时,若编辑的文件没有被保存,rwxrxr 2 ftp ftpusers 70 jul 28 21:12 software8则 vi 在窗口的最末行显示如下信息:No write since last change (use ! to overrides)提示用户该文件被修改后没有保存,需要使用!放弃保存。出现此提示后,vi 并不退出,继续等待用户命令。2) :q! vi 放弃所作修改而直接退到 shell 下。3)
31、 :wq 先保存文件,然后再退出 vi 返回到 shell。4) :x 该命令的功能与命令模式下的 ZZ 命令功能相同。4 如何让屏幕上显示正在编辑的文件的行号?在末行方式下输入如下命令即可给文本加行号::set number 或者:set nu5 说明 vi 中的字、句子、段落的含义。在 vi 中“字”有两种含义。一种是广义的字,它可以是两个空格之间的任何内容。狭义上的字是指:英文单词、标点符号和非字母字符,如“!” 、 “”、 “#”、 “$”、 “%”、 “”、“ thenUSAGEelse#根据传入参数完成启动、重启、终止程序的功能case $1 instart) start_svc
32、;restart) restart_svc ;stop) stop_svc ;*) USAGE ;esacfi第 12 章 gcc 的使用与开发1一个 C/C+程序从开始编码到生成可执行的二进制文件至少要经过 4 个步骤:(1)预处理(Preprocessing) ;(2)编译( Compilation) ;(3)汇编(Assembly) ;(4)链接28(Linking)2略。3略,可参见正文表 12-1。4默认路径放在/usr 目录下,其中库文件在/usr/lib 下,头文件在/usr/include 目录下。5为了简化生成代码的步骤,GNU 提供了 make 工具。make 工具读入一个
33、文本文件,文本文件中主要记录了一些规则。规则说明了生成最终的二进制代码依赖哪些模块以及这些模块如何生成的信息。为了简化,这个文件通常命名为 makefile。makefile 文件的一般格式是:目标:依赖项列表(Tab 缩进)命令.其中, “依赖项”一般为生成目标所需的其他目标或者文件名。6略,可参见正文表 12-3。第 13 章 gtk+图形界面程序设计1在 Xlib 之上出现了很多更高层的开发工具包。它们将底层的 Xlib 的 API 进行封装,提供更高级的接口,达到降低开发难度,提高开发效率的目标。此外,这些工具包大多并非完全专注于界面的开发,在常用数据结构(树、链表等)甚至数据库操作等
34、方面都提供了接口。下面将介绍的 GTK+就是这样一个开发工具包。2GTK+由 3 个库组成:(1)GLib :是 GTK+和 Gnome 的底层核心库,提供了可以供 C语言处理的数据结构、可移植的封装接口和用来处理事件循环、线程、动态加载的接口,构成了一个类似对象的体系结构。 (2)Pango:是处理界面布局和国际化的库,构成了GTK+2.0 处理字符和字体的核心。 (3)Atk:提供了一些其他功能的接口。一个实现对 Atk接口支持的应用软件,可以实现屏幕阅读、放大、使用其他输入设备等功能。3除了 GIMP 外,大量使用 GTK+的著名软件还有图形桌面系统 GNOME、字处理软件Abiword
35、、图表软件 Dia 以及辅助开发 GTK+程序的 Glade 等。4(1)头文件源代码:#include /btnOne 的点击事件处理函数void on_btn_One_clicked(GtkWidget *widget,gpointer data)g_print(“Hello from btn_One!n“);/btnTwo 的点击事件处理函数void on_btn_Two_clicked(GtkWidget *widget,gpointer data)g_print(“Hello from btn_Two!n“);/btnThree 的点击事件处理函数void on_btn_Three_
36、clicked(GtkWidget *widget,gpointer data)g_print(“Hello from btn_Three!n“);/窗口关闭事件处理函数void on_delete(GtkWidget *widget, GdkEvent *event,gpointer data)g_print(“Window Closed.n“);gtk_main_quit();29(2)主程序源代码:int main(int argc,char * argv)GtkWidget *window;/窗口GtkWidget *btnOne;/按钮 1GtkWidget *btnTwo;/按钮
37、2GtkWidget *btnThree;/按钮 3GtkWidget *table;/table 布局gtk_set_locale();gtk_init(/创建窗口window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window),“Hello Gtk!“); gtk_container_set_border_width (GTK_CONTAINER (window), 10);/创建 3*3 的表格布局并和窗口关联table = gtk_table_new(3,3,TRUE);gtk_co
38、ntainer_add(GTK_CONTAINER(window),table);/关联窗口关闭事件g_signal_connect (G_OBJECT (window), “delete_event“,G_CALLBACK (on_delete), NULL);/创建按钮并关联相对应的事件处理程序btnOne = gtk_button_new_with_label (“btn_One“);g_signal_connect (G_OBJECT (btnOne), “clicked“,G_CALLBACK (on_btn_One_clicked), NULL);btnTwo = gtk_butt
39、on_new_with_label (“btn_Two“);g_signal_connect (G_OBJECT (btnTwo), “clicked“,G_CALLBACK (on_btn_Two_clicked), NULL);btnThree = gtk_button_new_with_label (“btn_Three“);g_signal_connect (G_OBJECT (btnThree), “clicked“,G_CALLBACK (on_btn_Three_clicked), NULL);/在窗口布局上放置三个按钮gtk_table_attach(GTK_TABLE(tab
40、le),btnOne,0,2,0,1,GTK_FILL,GTK_FILL,0,0);gtk_table_attach_defaults(GTK_TABLE(table),btnTwo,0,2,1,3); gtk_table_attach_defaults(GTK_TABLE(table),btnThree,2,3,0,3); /显示窗口gtk_widget_show_all(window);gtk_main();return 0;第 14 章 Qt 图形界面程序设计1Qt 是和 GTK+一样,是在 XLib 之上的开发包。2Qt 是采用信号/槽的方式实现消息管理,而 GTK+是采用类似回调函数
41、的方式实现的。3著名项目有:KDE、Nokia 相关软件、FEKO 等。304Qt 软件虽然由商业化公司维护,但是 Qt 也为软件的开发提供了多种选择方式。Qt 的版本总的可以分为自由软件和商业两类版本,无论那种版本都可以获得软件的源代码。自由版本可以免费使用,可以采用 GPL 或 LGPL 软件许可证的方式。商业版的版本是需要付费的,使用商业版的版本开发出的软件受到更少的限制,还可以提供及时的客户支持服务。在自由软件版本中如果想获得质量高的客户支持服务可以通过付费的方式按需要购买特定的支持服务项目。5、/*myWidget.h*/#include #include class MyWidge
42、t: public QWidgetQ_OBJECTprivate:/三个按钮一个布局QPushButton *btnOne;QPushButton *btnTwo;QPushButton *btnThree;QGridLayout *grid;public:MyWidget( QWidget* parent = 0, const char* name = 0);MyWidget();protected:/关闭事件处理程序void closeEvent(QCloseEvent *);signals:/关闭事件void closeSignal(QCloseEvent *);public slots:/按钮点击处理程序void onBtnOne();void onBtnTwo();void onBtnThree();/*myWidget.cpp*/#include “myWidget.h“#include