关于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的開發過程進行介紹,后面會有專門的篇幅進行專題介紹。
總結
以上是生活随笔為你收集整理的关于Qt、Qt/E、Qtopia、qvfb、framebuffer、qpe等概念的对比介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: adb安装apk报错Failure [I
- 下一篇: Win10开启应用提示无法使用内置管理员