Linux下的图形界面编程

一、Qt和GTK+

虽然Linux下的大多数开发是基于字符界面的,但在Linux环境下也可以开发出美观大方的图形界面。经过多年的发展,目前已经存在多种用于在Linux下开发图形界面程序的开发包,其中较为常用的是Qt和GTK+。

Qt是一个跨平台的图形用户界面开发库,它不仅支持Linux操作系统,还支持所有类型的UNIX以及Windows操作系统。Qt良好的封装机制使它模块化程序非常高,可重用性很强,Qt提供了丰富的API供开发人员使用。使用Qt开发的图形用户界面程序具有良好的稳定性和健壮性。桌面环境KDE(K Desktop Environment即K桌面环境)就是使用Qt作为其底层库开发出来的。

由于Qt使用C++面向对象编程语言作为其开发语言,而许多Linux从事开发的程序员更喜欢或更习惯于用C语言。GTK+使用C语言作为开发语言。它基于LGPL授权,因此GTK+是开放源代码而且完全免费的。GTK+简单易用,执行效率高。基于这些原因,GTK+拥有为数众多的拥护者。LInux的桌面环境GNOME就是建立在GTK+基础上。

二、GTK+简介

下图是GTK+在几种相关的开发库中的位置。

Application

GNOME

GTK+

GDK

glib X

C

上图中每层除了与其上下相邻的两层有联系外,似乎与其他层没有关系。实际上,任何上层都可以调用位于它下面的各层提供的函数。例如,GTK+不仅可以调用GDK函数,也可以调用glib和C库函数。

下面按层作简单的介绍,具体说明如下:

层    具体描述

C    有两类C库函数可供调用,一类是标准C的库函数,如printf,scanf;另一类是

Linux的系统调用,如open,read,write,fork

glib               glib是GDK、GTK+、GNOME应用程序常用的库。它包含内存分配、字符串操

作、日期和时间、定时器等库函数,也包括链表、队列、树等数据结构相关的工

具函数

X                 它是控制图形显示的底层函数库,包括所有的窗口显示函数、响应鼠标和键盘操

作的函数

GDK             GDK(GIMP绘图包)是为了简化程序员使用X函数库而开发的。X库是其低层函

数库,GDK对其进行了封装,从而使程序员的开发效率大为提高。

GTK+           GTK+就是GIMP工具包,它把GDK提供的函数组织成对象,使用C语言模拟出

面对象的特征,这使得用它开发出来的图形界面程序更为简单和高效。GTK+的

一个重要组成部分是widget(控件,也称为小部件),按钮、文本编辑框、标

签等都是widget

GNOME        GNOME库是对GTK+的扩展,GNOME桌面环境用来控制整个桌面。GNOME

使用GNOME对象和函数与桌面小部件交互,基本小部件由GTK+处理。GNOME

为了方便程序员还增加了一些专门的小部件。

Application   Application即应用程序,它完成窗口的初始化,创建并显示窗口,进入消息循

环,等待用户使用鼠标或键盘进行操作。

简单地说,GTK+就是用C语言编写的用于开发图形界面程序的函数库。GTK+来源于GIMP(GNU Image Minipulation Program,即GNU图像处理程序)。GTK+在GDK(GIMP Drawing Kit,即GIMP绘图包)基础上创建,对它进行封装。GTK+简单易用,它设计良好,灵活而富有扩展性。它是自由软件,这意味着被它不仅开放源代码,而且还可以免费使用。由于它使用C语言作为其开发语言,而C语言是跨平台的,因此GTK+几乎可以在任何操作系统上使用。

阅读(3699) | 评论(0) | 转发(2) |

怎么开发Linux图形界面程序,Linux下的图形界面编程相关推荐

  1. Linux下 Qt界面程序嵌入另一个Qt界面程序_Qt应用嵌入外部进程窗口

    项目工程的实现,想要使用多个程序进行实现,在里面存在一定的调用的过程:调查的情况如下 Qt界面程序嵌入另一个Qt界面程序[Linux] Qt界面程序嵌入另一个Qt界面程序[Linux]_ptc321的 ...

  2. linux串口助手cutecom,buntu下cutecom图像界面串口调试工具使用

    一.安装,首先下载这个软件,终端和软件中心均可下载,终端下载命令: sudo apt-get install cutecom 即可快速搞定安装问题. 软件中心: 由于我已经通过终端安装成功,所以软件中 ...

  3. 嵌入式linux如何下载程序,Linux平台的下载程序-嵌入式系统-与非网

    有许多网络文件下载工具可以在Windows平台下很好地工作,如NetAnts."网际快车".TelePro等,还有像WebZip那样功能强大的离线浏览器.这些工具使我们可以在Win ...

  4. Linux加法简单程序,Linux操作之——简单命令

    目录 bash pstree type:显示命令的类型 Help:help (命令名)(参数) Man(manual):man(命令名)(参数) Whereis:whereis (文件名)(参数) F ...

  5. linux 中断 应用程序,Linux中断编程

    本文转载自[微信公众号:机械猿,ID:on_ourway]经微信公众号授权转载,如需转载与原文作者联系 基本概念 中断是指CPU在执行程序时,由于内外部事件或由程序预先安排的事件,导致CPU 暂停当前 ...

  6. linux 查找某个程序,Linux查找特定程序whereis实例详解

    Linux 查找特定程序 whereis whereis 命令主要用于查找程序文件,并提供这个文件的二进制可执行文件.源代码文件和使用手册存放位置. 1.查找命令程序 例如,查找 touch 命令 [ ...

  7. linux亮度调节程序,linux调节屏幕亮度

    新建三个文本文件并给予执行权限: up.sh if [ ! -w /sys/class/backlight/intel_backlight/brightness ];then echo "p ...

  8. ubuntu设置开机启动图形应用程序,替换默认图形桌面

    一.前言 无论你想要在ubuntu 12.04(11.10适用)开机启动图形程序,或者非图形程序,相信这篇文章能帮上大忙. 我将根据我的需求讲解我的做法,并解释为什么这么做.完了以后,各位看官根据自己 ...

  9. linux 查看端口 程序,linux开发:Linux下查看端口占用

    前段时间有学生问到,怎么查看 linux系统中已经被占用的端口?下面就统一给大家解释一下. 提到端口,那首先来回顾端口定义,为了区分一台主机接收到的数据包应该转交给哪个任务来进行处理,使用端口号来区别 ...

最新文章

  1. 贵州二本好的计算机专业,官方支持贵州大学创建双一流大学,贵州唯一的211,二本也有机会...
  2. 2021年广东赛区线上比赛高校组合点-五邑大学
  3. QT 信号与槽 最简单例子
  4. (译)Objective-C的动态特性
  5. Laravel-admin添加模型路由报错出现问题:Model does not exists !
  6. QT中动态库和静态库使用
  7. 2019 ICPC 南京 F. Paper Grading(字典树dfs序上树套树)
  8. 转:什么是 Base64编码
  9. lumion自动保存_LUMION吊打MAX,轻松玩转规划渲染!
  10. leetcode300 最长上升子序列
  11. tf 设置多显卡_用树莓派搭建私人简易网盘 2/5 树莓派4B初始设置
  12. Android 市场的未来
  13. linux下Sublime的安装使用
  14. c语言点阵输出字母,单片机C语言程序设计:8X8LED 点阵显示数字
  15. 高并发限流-漏桶算法和令牌桶算法
  16. “创新雷神号”卫星成功发射,华为云分布式云原生“天地一体”首次组网成功
  17. Web Service描述语言 WSDL 详解
  18. Opencv imread读取图片结果一直为空
  19. 拜托!不要再问我Session与Cookie的区别了
  20. 网络核心之分组交换与电路交换

热门文章

  1. 机器学习之特征选择与稀疏学习
  2. docker乞讨之路
  3. Java job interview:算法的经典与数据结构的程序图论
  4. 桌面支持--win7自动清理桌面图标解决办法
  5. Python项目实战——纽约出租车运行情况分析建模
  6. 房地产开发流程与操作步骤
  7. oracle授权表权限给用户
  8. sqlserver创建视图索引
  9. python生成词云图
  10. MATLAB使用教程(1)从零开始,MATLAB 2023a中文版下载安装