Qt 之路 (01)—前言

       這段時間一直在忙碌項目,好久好久沒更新博客了,眼看着項目也完成的差不多了,在這裏抽個時間給大家更新一下嵌入式開發的相關信息吧.   開始學習嵌入式QT開發,極力推薦!廢話少說,開始ing….

       Qt是一個著名的C++庫——或許並不能說這只是一個GUI庫,因爲Qt十分龐大,並不僅僅是GUI。使用Qt,

在一定程序上你獲得的是一個“一站式”的服務:不再需要研究STL(標準模版庫),不再需要C++的<string>,因

爲Qt有它自己的QString等等。或許這樣說很偏激,但Qt確實是一個“偉大的C++庫”。我們所使用的Qt,確切地

說也就是它的GUI編程部分。C++的GUI編程同Java不同:GUI並不是C++標準的一部分。所以,如果使Java,

那麼你最好的選擇就是AWT/Swing,或者也可以使SWT/JFace,但是,C++的GUI編程給了你更多的選擇:

wxWidget, gtk++以及Qt。這幾個庫我都有接觸,但是接觸都不是很多,只能靠一些資料和自己的一點粗淺的認

識說一下它們之間的區別。

      首先說wxWidget,這是一個標準的C++庫,和Qt一樣龐大。它的語法看上去和MFC類似,有大量的宏。據

說,一個MFC程序員可以很容易的轉換wxWidget上面來。wxWidget有一個很大的優點,就是它的界面都是原

生風格的。這是其他的庫所不能做到的。wxWidget的運行效率很高,據說在Windows平臺上比起微軟自家的

MFC也不相上下。

        gtk++其實是一個C庫,不過由於C++和C之間的關係,這點並沒有很大的關係。但是,gtk++是一個使用C

語言很優雅的實現了面向對象程序設計的範例。不過,這也同樣帶來了一個問題——它的裏面帶有大量的類型

轉換的宏來模擬多態,並且它的函數名“又臭又長(不過這點我倒是覺得無所謂,因爲它的函數名雖然很長,但

是同樣很清晰)”,使用下劃線分割單詞,看上去和Linux如出一轍。由於它是C語言實現,因此它的運行效率當

然不在話下。gtk++並不是模擬的原生界面,而有它自己的風格,所以有時候就會和操作系統的界面顯得格格不

入。再來看Qt,和wxWidget一樣,它也是一個標準的C++庫。但是它的語法很類似於Java的Swing,十分清

晰,而且SIGNAL/SLOT機制使得程序看起來很明白——這也是我首先選擇Qt的一個很重要的方面,因爲

我是學Java出身的 。不過,所謂“成也蕭何,敗也蕭何”,這種機制雖然很清楚,但是它所帶來的後果是你需要

使用Qt的qmake對程序進行預處理,才能夠再使用make或者nmake進行編譯。並且它的界面也不是原生風格

的,儘管Qt使用style機制十分巧妙的模擬了本地界面。另外值得一提的是,Qt不僅僅運行在桌面環境中,Qt已

經被Nokia收購,它現在已經會成爲Symbian系列的主要界面技術——Qt是能夠運行於嵌入式平臺的。以往人們

對Qt的授權多有詬病。因爲Qt的商業版本價格不菲,開源版本使用的是GPL協議。但是現在Qt的開源協議已經

變成LGPL。這意味着,你可以將Qt作爲一個庫連接到一個閉源軟件裏面。可以說,現在的Qt協議的爭議已經不

存在了——因爲wxWidgets或者gtk+同樣使用的是類似的協議發佈的。

       在本系列文章中,我們將使用Qt4進行C++ GUI的開發。我是參照着《C++ GUI Programming with Qt4》一

書進行學習的。其實,我也只是初學Qt4,在這裏將這個學習筆記記下來,希望能夠方便更多的朋友學習Qt4。

我是一個Java程序員,感覺Qt4的一些命名規範以及約束同Java有異曲同工之妙,因而從Java遷移

到Qt4似乎困難不大。不過,這也主要是因爲Qt4良好的設計等等。

       閒話少說,還是儘快開始下面的學習吧!

發佈了35 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章