关于Qt、Qt/E、Qtopia、qvfb、framebuffer、qpe等概念的对比介绍

最近要在嵌入式linux平台下搞UI界面开发,经过一番挑选,决定使用Qt作为UI开发平台。不过Qt中所涉及的Qt/E、Qtopia、qvfb、framebuffer、qpe等众多概念,却有点剪不断理还乱。于是决定花点时间对这些概念好好捋一捋。

说明一下,下面的文字内容大部分确实源自于网络摘录,但是都是经过我自己本人消化理解之后进行重新整理编排的,并不是简单的复制黏贴。

一、QT

首先介绍QT,它是一切之源。QT是一个跨平台的C++图形用户界面库(可以类比成Win平台下的MFC),由挪威TrollTech公司出品。Qt是Trolltech最早也是最有名的产品,它最初是作为一个跨平台的C++ GUI 库开发的,但随着它的发展,其中增加了一系列与GUI无关的库,如Xml、Socket、Thread等等,现在Qt已经成为了一个通用的C++跨平台类库。到了4.0版,更是将GUI部分从核心库分离出来,以便开发出不带GUI的服务程序。

Qt的授权是分为两条线,商业版和开源版。如果使用商业版的Qt,那么开发出的程序可以是私有的和商业的;如果使用的是开源版的Qt,由于其使用的是GPL协议(不是 LGPL),那么开发出的程序也必须是GPL的。

Qt的版本是按照不同的图形系统来划分的,目前分为四个版本:

  • Win32版,适用于Windows平台;
  • X11版,适用于使用了X系统的各种Linux和Unix平台;
  • Mac版,适用于苹果Mac OS;
  • embedded版,适用于具有帧缓冲(framebuffer)的Linux平台。

所以,一般来说,Qt泛指Qt的所有桌面版本,比如Qt for X11,Qt for Windows,Qt for Mac等。由于Qt最早是在Linux中随着KDE而流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt for X11。一般命名为qt-x11-opensource-xxx!

二、QT/E

Qt刚出现的时候,在linux系统上,都是基于X11环境的(X11也叫做X Window,是一种位图显示的视窗系统。它是在Unix和类Unix操作系统,以及OpenVMS上建立图形用户界面的标准工具包和协议),该环境有一个最大的问题就是资源消耗比较大。而对于嵌入式linux领域,受限的硬件环境明显不可能去运行庞大的X11服务器,因此,TrollTech公司对QT进行了优化,推出了嵌入式版本的Qt-embedded(Qte,也可叫做QT/E),该版本的QT跳过了Xlib和XServer,而是直接操作帧缓冲(framebuffer),在速度和体积上有很大的提高。

不过要注意的是,虽然QT/E是Qt的嵌入式版本,但是它不是Qt/X11的子集,它有部分机制(比如QCOP等)就不能用于Qt/X11中。

三、Qtopia

Qtopia最初是sourceforge.net上的一个开源项目,全称是Qt Palmtop Environment,是构建于Qte之上一个类似桌面系统的应用环境,以消费类电子设备为目标,分为PDA和Phone两个版本,包含完整的应用层、灵活的用户界面、窗口操作系统、应用程序启动程序以及开发框架,甚至预置了掌上系统常见的功能如电话簿、日程表等,为基于Linux操作系统的PDA和Phone提供了一个完整的图形环境。

这里要注意的是,Qtopia是基于Qte的应用环境的开发出来的,换个说法就是Qte是库,Qtopia是用Qte这个库开发出来的应用程序(必须搞清楚Qtopia就是一个应用程序)。其最高免费版本是Qtopia-2.2.0,之后就再没更新更高免费版本的Qtopia。

值得特别注意的是Qte和Qtopia之间的关系。在版本4之前,Qte和Qtopia是不同的两套程序,Qte是基础类库,Qtopia是构建于Qte之上的一系列应用程序。但从版本4开始,Trolltech将Qte并入了Qtopia,并推出了新的Qtopia4。在该版中,原来的Qte被称为Qtopia Core,作为嵌入式版本的核心,既可以与Qtopia配合,也可以独立使用。原来的Qtopia则被分成几层, 核心的应用框架和插件系统被称为Qtopia Platform,上层的应用程序则按照不同的目标用户分为不同的包,如Qtopai PDA,Qtopia Phone。

四、QT Creator

QT Creator是跨平台的Qt IDE,它其实跟Eclipse相似,都是一个集成开发环境,也就是说QT Creator是我们用来开发QT相关的一个平台。

以下来自小百:QT Creator是Qt被Nokia收购后推出的一款新的轻量级集成开发环境(IDE)。此IDE能够跨平台运行,支持的系统包括Linux(32位及64位)、Mac OS X以及Windows。根据官方描述,QT Creator的设计目标是使开发人员能够利用QT这个应用程序框架更加快速及轻易的完成开发任务。在功能方面,Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了 Qt Designer、图形化的 GDB 调试前端,集成 qmake 构建工具等。

五、FrameBuffer

FrameBuffer 是出现在liunx 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

【另外,在查找整理上述资料的过程中,发现还有一个概念,叫做qpe。虽然目前我尚未接触到,但是感觉应该也是属于这一个圈子里的,于是先摘录在此,以备日后查阅】。

全称为Qt Palmtop Environment。为qt程序建立一个桌面环境,有时可以简单理解就是指的Qtopia。

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

这里写图片描述

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

八、篇后语

本篇仅仅只是对上述概念进行对比和区分,并未对Qt的开发过程进行介绍,后面会有专门的篇幅进行专题介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值