Qt、Qte、Qtopia、Qvfb、Qpe概念区别

知识经验 8658浏览 2评论

Qt

一般说的Qt其实是泛指Qt的所有桌面版本,例如:Qt/X11(Linux下),Qt Windows(windows下)以及Qt Mac等。运行于一般PC桌面环境的应用程序开发平台。简单理解就是,我们开发过程是在PC桌面环境(Windows,Mac或Linux等)中,而开发出来的程序也是在PC中运行的。
Nokia 在2008年收购 Trolltech 后,将 Qt 更名为 Qt Software,随后改为 Qt Development Frameworks。而后 Nokia 开发了 IDE 工具 Qt Creator。

Qt Embeded(Qte)

Qt用于嵌入式Linux的版本,简称为Qte或Qt/E。Qte去掉X Lib(因为太大了)的依赖而直接工作于 Framebuffer 机制之上,虽然它是Qt的嵌入式版本,但是它不是Qt/X11的子集,它有部分机制(比如QCOP等)就不能用于Qt/X11中。其实Qte就是一个基础库。
Qte用于Linux、Wince等嵌入式平台的开发基础库,属于Qt的扩展(而不是Qt的子集)。

Qtopia

Qtopia是一个基于Qte的类似桌面系统的应用环境,包括有PDA版本和Phone版本。请注意是基于Qte的应用环境,换个说法就是Qte是库(实际上Qte就是基础类库),Qtopia是用Qte这个库开发出来的应用程序(必须搞清楚Qtopia就是一个应用程序)。其最高免费版本是:Qtopia-2.2.0,之后就再没更新更高免费版本的Qtopia。原本Qtopia并不包含Qte库,在使用之前必须先安装Qte,但据说在Qtopia4版本之后Qtopia就自带了Qte,两者合二为一。
Qtopia早期是一个sf.net上的开源项目,构建于Qte之上。从Qt4.1开始,Qt/Embedded改名为Qtopia Core,又从Qt4.4.1开始,Qtopia Core又改名为Qt for Embedded Linux,就是现在的Qte(eveywhere)。

Framebuffer

FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。使用FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer的读写直接对显存进行操作。在PC中使用的一般都是基于X Lib库的X Window,但是在嵌入式下就没法使用如此庞大的X Lib库来完成显示,显示设备简陋是一方面,此外嵌入式的片上资源也不允许。这样就只能使用Framebuffer方式往屏幕设备上绘图显示了。与X Lib相比,Framebuffer本身不具备任何运算数据的能力,就好比是一个暂时存放水的水池,CPU将运算后的结果放到这个水池,水池再将结果流到显示器,中间不会对数据做处理。在嵌入式应用开发中多使用framebuffer方式。

qvfb

全程为qt virtual framebuffer。是为qt提供的一个虚拟framebuffer的应用程序,实现对qt的应用程序提供一个模拟的嵌入式设备,可直接看到程序在“实际”设备中的运行情况。在PC上开发qt程序时,主要使用它来进行仿真。说白了就是:qvfb也就是一个应用程序,就是给qt程序提供一个模拟的framebuffer,这样就可以在PC中为基于framebuffer运行的qt程序(一般就是指嵌入式qt程序)建立一个虚拟的运行平台。qvfb主要与Qtopia(或qpe)一起使用。

qpe

全称为Qt Palmtop Environment。为qt程序建立一个桌面环境,有时可以简单理解就是指的Qtopia。
说明:关于qvfb与qpe,我的理解是,qpe在运行时会建立一个虚拟的framebuffer(通过共享内存方式)与qvfb的虚拟framebuffer进行交互,这里qpe作为输出,为qvfb提供输入,而qvfb则模拟出具体的嵌入式设备(如手机,PDA平板电脑等),并将鼠标键盘等操作信息反馈给qpe。这样就使用虚拟framebuffer的方式建立了一个完整的,适合嵌入式qt程序运行的虚拟嵌入式设备。如下图所示:
Qt程序到ARM开发板

利用qvfb虚拟出了一部手机,而我们的程序就会运行在这部手机的“屏幕里面”!很容易理解吧。

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 涨知识了。。。。。。。。
    zjf_linux 5年前 (2015-04-08) 回复 编辑
  2. 真不错,赞一个,继续努力啊
    周诗雅 4年前 (2015-12-19) 回复 编辑