[GUI] Linux中的图形管理

你说的曾经没有我的故事 提交于 2020-01-16 10:01:55

做了一段时间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下的一个应用程序而已。

 

<2> QT事件与X11的关系

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!