W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Qt 是一個著名的 C++ 庫——或許并不能說這只是一個 GUI 庫,因為 Qt 十分龐大,并不僅僅是 GUI。使用 Qt,在一定程序上你獲得的是一個“一站式”的服務(wù):不再需要研究 STL,不再需要 C++ 的string,因為Qt有它自己的 QString 等等?;蛟S這樣說很偏激,但 Qt 確實是一個“偉大的 C++ 庫”。
我們所使用的 Qt,確切地說也就是它的 GUI 編程部分。C++ 的 GUI 編程同 Java 不同:GUI 并不是 C++ 標(biāo)準(zhǔn)的一部分。所以,如果使用 Java,那么你最好的選擇就是 AWT/Swing,或者也可以使SWT/JFace,但是,C++ 的 GUI 編程給了你更多的選擇:wxWidget, gtk++ 以及 Qt。這幾個庫我都有接觸,但是接觸都不是很多,只能靠一些資料和自己的一點粗淺的認識說一下它們之間的區(qū)別(PS: 更詳盡的比較在前面的文章中有)。
首先說 wxWidget,這是一個標(biāo)準(zhǔn)的 C++ 庫,和 Qt 一樣龐大。它的語法看上去和 MFC 類似,有大量的宏。據(jù)說,一個 MFC 程序員可以很容易的轉(zhuǎn)換到 wxWidget 上面來。wxWidget 有一個很大的優(yōu)點,就是它的界面都是原生風(fēng)格的。這是其他的庫所不能做到的。wxWidget 的運行效率很高,據(jù)說在Windows 平臺上比起微軟自家的 MFC 也不相上下。
gtk++ 其實是一個 C 庫,不過由于 C++ 和 C 之間的關(guān)系,這點并沒有很大的關(guān)系。但是,gtk++ 是一個使用 C 語言很優(yōu)雅的實現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計的范例。不過,這也同樣帶來了一個問題——它的里面帶有大量的類型轉(zhuǎn)換的宏來模擬多態(tài),并且它的函數(shù)名“又臭又長(不過這點我倒是覺得無所謂,因為它的函數(shù)名雖然很長,但是同樣很清晰)”,使用下劃線分割單詞,看上去和 Linux 如出一轍。由于它是 C 語言實現(xiàn),因此它的運行效率當(dāng)然不在話下。gtk++ 并不是模擬的原生界面,而有它自己的風(fēng)格,所以有時候就會和操作系統(tǒng)的界面顯得格格不入。
再來看 Qt,和 wxWidget 一樣,它也是一個標(biāo)準(zhǔn)的 C++ 庫。但是它的語法很類似于 Java 的Swing,十分清晰,而且 SIGNAL/SLOT 機制使得程序看起來很明白——這也是我首先選擇 Qt 的一個很重要的方面,因為我是學(xué) Java 出身的 :) 。不過,所謂“成也蕭何,敗也蕭何”,這種機制雖然很清楚,但是它所帶來的后果是你需要使用 Qt 的 qmake 對程序進行預(yù)處理,才能夠再使用 make 或者nmake 進行編譯。并且它的界面也不是原生風(fēng)格的,盡管 Qt 使用 style 機制十分巧妙的模擬了本地界面。另外值得一提的是,Qt 不僅僅運行在桌面環(huán)境中,Qt 已經(jīng)被 Nokia 收購,它現(xiàn)在已經(jīng)會成為Symbian 系列的主要界面技術(shù)—— Qt 是能夠運行于嵌入式平臺的。
以往人們對 Qt 的授權(quán)多有詬病。因為 Qt 的商業(yè)版本價格不菲,開源版本使用的是 GPL 協(xié)議。但是現(xiàn)在 Qt 的開源協(xié)議已經(jīng)變成 LGPL。這意味著,你可以將 Qt 作為一個庫連接到一個閉源軟件里面??梢哉f,現(xiàn)在的 Qt 協(xié)議的爭議已經(jīng)不存在了——因為 wxWidgets 或者 gtk+ 同樣使用的是類似的協(xié)議發(fā)布的。
在本系列文章中,我們將使用 Qt4 進行 C++ GUI 的開發(fā)。我是參照著《C++ GUI Programming with Qt4》一書進行學(xué)習(xí)的。其實,我也只是初學(xué) Qt4,在這里將這個學(xué)習(xí)筆記記下來,希望能夠方便更多的朋友學(xué)習(xí) Qt4。我是一個 Java 程序員,感覺 Qt4 的一些命名規(guī)范以及約束同 Java 有異曲同工之妙,因而從 Java 遷移到 Qt4 似乎困難不大。不過,這也主要是因為 Qt4 良好的設(shè)計等等。
閑話少說,還是盡快開始下面的學(xué)習(xí)吧!
致謝:“豆子空間” 博客 http://devbean.blog.51cto.com/448512/193918
更新日期 | 更新內(nèi)容 |
---|---|
2015-07-23 | Qt 學(xué)習(xí)之路 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: