转:http://www.cnblogs.com/yongpenghan/p/4555619.html

做了一段时间linux下与QT事件相关的工作,经常会遇到X11,总是苦于无法完全理解其与linux以及QT事件之间的关系,所以用两篇文章来简单总结下linux中的图形管理和QT事件与X11的关系。

<1> linux中的图形管理

<2> QT事件与X11的关系

我们先来几个基础概念,相关概念的起源和发展可以百度或谷歌查看。

X11

X11(X Window System Protocol,Version 11),也称X Window,是一种在*nix系统的位图显示视窗系统,为GUI环境构建提供基本的框架,可以在屏幕上绘图、移动窗口、鼠标和键盘操作等,仅为X server和X client之间提供通信协议。X server是xfree86/xorg驱动下的显示设备、鼠标、键盘等外设的统称,X client通过X11协议和xfree86/xorg实现的X server通信,比如X client告诉X server画一个左上角坐标为(x, y)、宽为w、高为h的窗口,xfree86就点亮显示器的一些像素点,绘制一个请求的窗口。

X client的实现用Xlib来封装,其头文件一般位于/usr/include/X11/下。

XFree86

一个实现X server的免费服务器软件。

Gnome

Gnome(GNU Network Object Model Environment),*nix系统的图形界面管理系统,利用Gtk库实现,是一个X client。

KDE

KDE(K Desktop Environment),*nix系统的图形界面管理系统,利用Qt库实现,是一个X client。

Qt

Qt是一个跨平台(通过Q_WS_WIN、Q_WS_X11、Q_WS_MAC等宏定义不同系统的实现)的C++图形应用程序框架,对Xlib做了一层封装。

Gtk

Gtk也是一个跨平台的C图形应用程序框架,同样对Xlib做了一层封装。

看了这几个概念,它们之间的关系也应该大致清楚了。

X server主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将它交给X client作出反馈,并且处理X client传来的输出信息;X client提供一个完整的GUI界面,负责与用户直接交互。

linux本身没有图形界面,Gnome/KDE只不过是linux下的应用程序,Xfree86也仅是linux下的一个应用程序而已。

[GUI] Linux中的图形管理的更多相关文章

  1. linux中服务(service)管理

    一.介绍 服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux 中非常重 ...

  2. 在linux中使用包管理器安装node.js

    网上文章中,在linux下安装node.js都是使用源码编译,其实node的github上已经提供了各个系统下使用各自的包管理器(package manager)安装node.js的方法. 1. 在U ...

  3. LInux中的物理内存管理

    2017-02-23 一.伙伴系统 LInux下用伙伴系统管理物理内存页,伙伴系统得益于其良好的算法,一定程度上可以避免外部碎片为何这么说?先回顾下Linux下虚拟地址空间的分布. 在X86架构下,系 ...

  4. 转:Linux中的内存管理

    前一段时间看了<深入理解Linux内核>对其中的内存管理部分花了不少时间,但是还是有很多问题不是很清楚,最近又花了一些时间复习了一下,在这里记录下自己的理解和对Linux中内存管理的一些看 ...

  5. 关于在linux中使用图形界面的网络管理工具

    有好几种自动设置的工具可以选择(既然说是自动设置的工具,那就说明有手动设置的工具,例如 使用 ip, iw, iwconfig 这些命令设置网络),例如:Connman, netctl, Networ ...

  6. Linux中的工作管理(Job Control )

    以前使用Linux老是会不小心按下Ctrl + z,然后就出现看不懂的情况,以为程序突然就没了,今天专门研究了下Linux下的几个快捷键和工作管理. 其中找到一篇很不错的文章,大部分是里面转载的. 原 ...

  7. Linux 中使用 virsh 管理 KVM 虚拟机 (转)

    术语 虚拟化指的是:在相同的物理(硬件)系统上,同时运行多个操作系统,且这几个系统相互隔离的可能性,而那个硬件在虚拟化架构中被称作宿主机(host).虚拟机监视器(也被称为虚拟机管理程序(hyperv ...

  8. Linux中的段管理,bss段,data段,

    Linux 的段管理, BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存 ...

  9. Linux中ansible批量管理软件部署及剧本编写

    服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29: ...

随机推荐

  1. 【Python + ATX基于uiaotumator2】之Android—APP自动化简易例子

    上代码: import uiautomator2 as u2 from time import sleep d = u2.connect_usb('608ad0fe') #打开小卖 # d(text= ...

  2. Java基础12 类型转换与多态(转载)

    类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是 ...

  3. 【转】Monkey测试2——Monkey测试策略

    Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...

  4. chrome远程调试按inspect后出现的界面为空白,应如何解决?

    使用chrome进行远程调试命令: chrome://inspect 编辑hosts文件,添加: Hosts文件路径:C:\Windows\System32\drivers\etc\hosts 61. ...

  5. Lumen migration(数据库协同)

    建立迁移文件/新建表文件 php artisan make:migration create_users_table 添加字段 php artisan make:migration add_colum ...

  6. SQL获取某个时间字符串里的月和日,获取某天是周几

    select datename(weekday,'2016-11-4') as '周' select convert(varchar,datepart(month,'2016-11-4')) as ' ...

  7. Linux 下安装svn

    安装步骤如下: 1.yum install subversion   2.输入rpm -ql subversion查看安装位置,如下图:   我们知道svn在bin目录下生成了几个二进制文件. 输入 ...

  8. Creating a Message Queue in PHP Without External Libraries

    w http://www.ebrueggeman.com/blog/creating-a-message-queue-in-php

  9. laydate日历控件

    var start = { elem: '#start_0', format: 'YYYY-MM-DD', max: laydate.now(-), istime: false, istoday: f ...

  10. Linux centos下设置定时备份任务

    实现准备 # 需要备份文件路径:/opt/apollo/logs/access_log [root@localhost opt]# cd apollo/ [root@localhost apollo] ...