Qt軟件的發展歷史及優勢特點


1. 什么是Qt:

Qt 是一個著名的 C++ 應用程序框架。你並不能說它只是一個 GUI 庫,因為 Qt 十分龐大,並不僅僅是 GUI 組件。使用 Qt,在一定程度上你獲得的是一個“一站式”的解決方案:不再需要研究 STL,不再需要 C++ 的<string>,不再需要到處去找解析 XML、連接數據庫、訪問網絡的各種第三方庫,因為 Qt 自己內置了這些技術。

Qt 是一個跨平台的框架。跨平台 GUI 通常有三種實現策略:

  1. API 映射:API 映射是說,界面庫使用同一套 API,將其映射到不同的底層平台上面。大體相當於將不同平台的 API 提取公共部分。比如說,將 Windows 平台上的按鈕控件和 Mac OS 上的按鈕組件都取名為 Button。當你使用 Button 時,如果在 Windows 平台上,則編譯成按鈕控件;如果在 Mac OS 上,則編譯成按鈕組件。這么做的好處是,所有組件都是原始平台自有的,外觀和原生平台一致;缺點是,編寫庫代碼的時候需要大量工作用於適配不同平台,並且,只能提取相同部分的 API。比如 Mac OS 的文本框自帶拼寫檢測,但是 Windows 上面沒有,則不能提供該功能。這種策略的典型代表是 wxWidgets。這也是一個標准的 C++ 庫,和 Qt 一樣龐大。它的語法看上去和 MFC 類似,有大量的宏。據說,一個 MFC 程序員可以很容易的轉換到 wxWidgets 上面來。
  2. API 模擬:前面提到,API 映射會“缺失”不同平台的特定功能,而 API 模擬則是解決這一問題。不同平台的有差異 API,將使用工具庫自己的代碼用於模擬出來。按照前面的例子,Mac OS 上的文本框有拼寫檢測,但是 Windows 的沒有。那么,工具庫自己提供一個拼寫檢測算法,讓 Windows 的文本框也有相同的功能。API 模擬的典型代表是 wine —— 一個 Linux 上面的 Windows 模擬器。它將大部分 Win32 API 在 Linux 上面模擬了出來,讓 Linux 可以通過 wine 運行 Windows 程序。由此可以看出,API 模擬最大優點是,應用程序無需重新編譯,即可運行到特定平台上。另外一個例子是微軟提供的 DirectX,這個開發庫將屏蔽掉不同顯卡硬件所提供的具體功能。使用這個庫,你無需擔心硬件之間的差異,如果有的顯卡沒有提供該種功能,SDK 會使用軟件的方式加以實現。(關於舉例,可以參考文末一段精彩的討論。)
  3. GUI 模擬:任何平台都提供了圖形繪制函數,例如畫點、畫線、畫面等。有些工具庫利用這些基本函數,在不同繪制出自己的組件,這就是 GUI 模擬。GUI 模擬的工作量無疑是很大的,因為需要使用最基本的繪圖函數將所有組件畫出來;並且這種繪制很難保證和原生組件一模一樣。但是,這一代價帶來的優勢是,可以很方便的修改組件的外觀——只要修改組件繪制函數即可。很多跨平台的 GUI 庫都是使用的這種策略,例如 gtk+(這是一個 C 語言的圖形界面庫。使用 C 語言很優雅地實現了面向對象程序設計。不過,這也同樣帶來了一個問題——使用大量的類型轉換的宏來模擬多態,並且它的函數名一般都比較長,使用下划線分割單詞,看上去和 Linux 如出一轍。gtk+ 並不是模擬的原生界面,而有它自己的風格,所以有時候就會和操作系統的界面格格不入。),Swing 以及我們的 Qt。

Qt 和 wxWidgets 一樣,也是一個標准的 C++ 庫。但是它的語法類似於 Java 的 Swing,十分清晰,而且使用信號槽(signal/slot)機制,讓程序看起來很明白——這也是很多人優先選擇 Qt 的一個很重要的原因。不過,所謂“成也蕭何,敗也蕭何”。這種機制雖然很清楚,但是它所帶來的后果是你需要使用 Qt 的 moc 對程序進行預處理,才能夠再使用標准的 make 或者 nmake 進行正常的編譯,並且信號槽的調用要比普通的函數調用慢大約一個數量級。Qt 的界面也不是原生風格的,盡管 Qt 使用 style 機制十分巧妙地模擬了原生界面。另外值得一提的是,Qt 不僅僅能夠運行在桌面環境中,還可以運行在嵌入式平台以及手機平台。

2. Qt的發展歷史:

Haavard Nord和Eirik Chambe-Eng於1991年開始開發“Qt”,1994年3月4日創立公司,最早名為Quasar Technologies,然后更名為TrollTech,然后再改為Trolltech,中文名是“奇趣科技”。 。

后來在 2008 年,Nokia 斥資 1.5 億美元收購 TrollTech,將 Qt 應用於 Symbian 程序開發。以增強其在跨平台軟件研發方面的實力,更名為Qt Software。

2009年5月11日,諾基亞Qt Software宣布Qt源代碼管理系統面向公眾開放。為了便於這些內容的管理,Qt Software啟用了基於Git和Gitorious開源項目的Web源代碼管理系統。 
2012年8月9日,Digia宣布已完成對諾基亞Qt業務及軟件技術的全面收購,並計划將Qt應用到Android、IOS及Window8平台上。

2013年7月3日,Digia公司Qt開發團隊在其官方博客上宣布Qt 5.1正式版發布。
2013年12月11日,Digia公司Qt開發團隊宣布Qt 5.2正式版發布。
2014年4月,Digia公司Qt開發團隊宣布Qt Creator 3.1.0正式版發布。
2014年5月20日,Digia公司Qt開發團隊宣布Qt 5.3正式版發布。
Qt的最新版本是Qt5.11版。
 
3. Qt的優勢特點:

使用Qt開發的軟件,相同的代碼可以在任何支持的平台上編譯運行,而不需要修改源代碼。它會自動根據平台的不同,表現平台特有的圖形界面風格。

經過多年發展,Qt不但擁有了完備的C++圖形庫,而且近年來的版本逐漸集成了數據庫、OpenGL庫、多媒體庫、網路、腳本庫、XML庫、WebKit庫等等,其核心庫也加入了進程間通信、多線程等模塊,極大地豐富了Qt開發大規模復雜跨平台應用程序的能力,真正意義上實現了其研發宗旨“Code Less; Create More; Deploy Anywhere.”

  1)具有優良的跨平台特性:Qt支持一下的操作系統Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。

  2)Qt是面向對象的:Qt對於用戶開發而言是十分方便的,因為Qt良好的封裝機制令Qt的模塊化程度非常高並且可重用性好。而且在Qt中也提供了一種稱為signals/slots 的安全類型用以代替了callback,這樣子各個元件之間的協同工作都會變得簡單。

  3)Qt具有豐富的API:在Qt中包括了至少250個的C++類,並且還提供了基於模板的 collections,serialization,file,I/O device,directory management,date/time 類。甚至還包括正則表達式的處理 功能。

  4)Qt支持2D/3D圖形渲染,並且支持OpenGL。

  5)Qt支持大量的文檔開發。

  6)有XML的支持。

4. 基於Qt開發的產品

(1)3D Slicer: a free open source software for visualization and medical image computing;(是一個基於VTK的開源的可視化和醫學影像計算的軟件) 
(2)ParaView: 也是一個基於VTK的數據可視化的工具軟件,在流體力學、空氣動力學、生物醫學、統計學等有數據可視化需求的領域中發揮重要的作用; 
(3)Google Earth: Google開發的一款三維虛擬地圖軟件; 
(4)Opera: 著名的網頁瀏覽器,在歐洲的市場占有率很高; 
(5)Qt Creator: the free software cross-platform integrated development environment from Nokia;(是由諾基亞開發的一個可以跨平台的集成IDE) 
(6)Skype: 一個基於P2P的VOIP聊天軟件; 
(7)VirtualBox: Oracle開發的虛擬機軟件; 
(8)YY語音:是一個可以進行在線多人語音聊天和語音會議的免費軟件,在中國擁有龐大的用戶群; 
(9)咪咕音樂:是中國移動傾力打造的正版音樂播放器。 
(10)WPS Office: 金山公司(Kingsoft)出品的辦公軟件,與微軟Office兼容性良好。

Qt學習推薦:https://www.cnblogs.com/xiehuan-blog/articles/9029080.html(轉載的一片文章,也是網上較完全的QT學習教程)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM