| 24小時(shí)熱門(mén)版塊排行榜 |
| 3 | 1/1 | 返回列表 |
| 查看: 1471 | 回復(fù): 2 | ||||
yalefield金蟲(chóng) (文壇精英)
老漢一枚
|
[交流]
【轉(zhuǎn)帖】徹底超越MFC-->諾基亞的開(kāi)源GUI庫(kù):Qt 已有2人參與
|
|
http://www.cnbeta.com/articles/111246.htm Visual Studio 2003/2005/2008下開(kāi)發(fā)Windows圖形界面程序,程序員一直做著抉擇:選擇.net平臺(tái),則意味著需要XP用戶(hù)安裝.net Framework, 而且自己不能手工控制某些代碼的優(yōu)化;選擇原生C++/MFC平臺(tái),則意味著需要編寫(xiě)繁瑣的代碼(VS2008甚至裁掉了基于MFC的GUI Designer,所有MFC GUI代碼,除IDE內(nèi)置的可憐的框架外,必須手工產(chǎn)生)。 自從Visual Studio 2002發(fā)布以來(lái),微軟一直在C++平臺(tái)推C++向.NET平臺(tái)的轉(zhuǎn)換,先后推出了Managed C++和其升級(jí)版本C++/CLI,而對(duì)原生運(yùn)行的C++一直冷淡,除了更加符合標(biāo)準(zhǔn)之外,幾乎沒(méi)有新的庫(kù)加入。而同時(shí),開(kāi)源陣營(yíng)的C++平臺(tái)迅速發(fā)展。其一是GCC4大幅度提升了編譯優(yōu)化,二進(jìn)制碼質(zhì)量已經(jīng)超過(guò)了原生編譯的Visual C++;其二是一系列開(kāi)源跨平臺(tái)的GUI庫(kù)(例如Qt、WxWidgets、GTK等)的蓬勃發(fā)展,已經(jīng)達(dá)到和超過(guò)了一代巔峰Visual C++ 6.0(MFC庫(kù))的水平了。 下面筆者就向大家簡(jiǎn)要介紹Qt這個(gè)庫(kù)。 筆者個(gè)人認(rèn)為,在Qt、WxWidgets、GTK三個(gè)開(kāi)源C/C++庫(kù)中,Qt的設(shè)計(jì)思路、IDE支持、代碼執(zhí)行速度都達(dá)到了較好的(至少,能和微軟的Visual C++/CLI媲美)的水平。(GTK是基于C的,也是面向?qū)ο箫L(fēng)格,比較適合C開(kāi)發(fā)者。) 歷史 Qt本來(lái)是trolltech公司設(shè)計(jì)的一個(gè)跨平臺(tái)庫(kù)。2008年trolltech被諾基亞收購(gòu),Qt就成了諾基亞的官方GUI界面庫(kù)。 包含的模塊(摘自維基百科) * QtCore—QtCore模塊是所有基于Qt的應(yīng)用程序的基礎(chǔ),提供信號(hào)與槽的對(duì)象間通信機(jī)制、IO、事件和對(duì)象處理、多線(xiàn)程 * QtGui—包含了開(kāi)發(fā)圖形用戶(hù)界面應(yīng)用程序所需的功能。使用其支持的各個(gè)平臺(tái)的本地圖形API。支持反鋸齒、向量形變。支持ARGB頂層 widget * QtMultimedia * QtNetwork—提供了網(wǎng)絡(luò)程序設(shè)計(jì)功能。支持通用協(xié)議,如HTTP、FTP和DNS,包括對(duì)異步HTTP 1.1的支持。與較低層的TCP/IP和UDP協(xié)議,如QTcpSocket、QTcpServer和QUdpSocket * QtOpenGL—提供在應(yīng)用程序中使用OpenGL和OpenGL ES加入3D圖形。在Windows平臺(tái)上亦支持Direct3D * QtOpenVG * QtScript— 包含完全集成的ECMA標(biāo)準(zhǔn)腳本引擎。提供信號(hào)與槽機(jī)制簡(jiǎn)化對(duì)象間通信和QtScript調(diào)試器。 * QtScriptTools—額外的Qt Script組件 * QtSql—將數(shù)據(jù)庫(kù)集成至應(yīng)用程序。支持所有主要的數(shù)據(jù)庫(kù)驅(qū)動(dòng)包括ODBC、MySQL、PSQL、SQLite、 ibase、Oracle、Sybase、DB2。 * QtSvg—支持SVG格式 * QtWebKit—集成WebKit,提供了HTML瀏覽器引擎,便于在本地應(yīng)用程序中嵌入網(wǎng)絡(luò)內(nèi)容和服務(wù)。 * QtXml—提供了XML文檔的閱讀器和編寫(xiě)器、支持SAX和DOM。 * QtXmlPatternsl—提供了XQuery和XPath引擎支持。 * Phonon—集成Phonon,支持跨平臺(tái)應(yīng)用程序播放音頻和視頻內(nèi)容。 * Qt3Support—模塊提供兼容Qt 3.х.х版本的程序庫(kù) 從上面可以看出,Qt可以取代自Visual C++ 6.0中就開(kāi)始支持的MFC、Winsock、MSHTML、MSXML、MSDXM(以及后來(lái)的Windows Media Player控件)、ADO數(shù)據(jù)訪問(wèn)等模塊。 開(kāi)發(fā)環(huán)境IDE 開(kāi)發(fā)環(huán)境是程序員最為關(guān)注的,Windows平臺(tái)微軟VC++、VB、C#系列語(yǔ)言的成功,就是因?yàn)橛辛藦?qiáng)大的Visual Studio開(kāi)發(fā)環(huán)境. 當(dāng)年Visual Studio 6.0跟MFC就提供了類(lèi)似的事件-處理函數(shù)鉤連工具,如今開(kāi)源軟件也提供了,并且更為強(qiáng)大易用。 除了Qt Creator,Qt的窗體設(shè)計(jì)器(Qt Designer)還可以作為插件,在別的IDE下使用。例如,可以插入Netbeans、Visual Studio和Eclipse。至今,插件仍然有一定的問(wèn)題,例如Socket/Slot關(guān)聯(lián)器,在ubuntu 9.10 + Netbeans 6.8的搭配下,Signal/Slot關(guān)聯(lián)器無(wú)法使用,而在Windows 7+Visual Studio 2008 SP1下正常。 為了開(kāi)發(fā)多語(yǔ)言程序,Qt提供了Qt Linguist,可以方便地編輯多語(yǔ)言資源。 內(nèi)存管理 可能是出于對(duì)嵌入式應(yīng)用的性能考慮,現(xiàn)在版本的Qt并沒(méi)有集成功能非常強(qiáng)大的(類(lèi)似于Java或.net的)垃圾收集器,但是也不用在內(nèi)存管理上太過(guò)費(fèi)心。Qt中大部分widget都從QObject類(lèi)繼承而來(lái),而QObject有一個(gè)上級(jí)對(duì)象的屬性;當(dāng)上級(jí)對(duì)象(如窗體中按鈕的上級(jí)對(duì)象是窗體)退出內(nèi)存,Qt內(nèi)置的機(jī)制會(huì)將所有下級(jí)對(duì)象一起銷(xiāo)毀。如果在上級(jí)對(duì)象未退出內(nèi)存的時(shí)候需要?jiǎng)h除下級(jí)對(duì)象以釋放內(nèi)存,則可以調(diào)用freeLater( )函數(shù)來(lái)釋放。 當(dāng)然,像傳統(tǒng)的C++一樣,Qt不解決野指針陷阱,對(duì)象刪除后的指針需由程序員自己消滅或者另賦他址。相比于MFC的內(nèi)存管理,Qt的內(nèi)存管理已經(jīng)相當(dāng)人性化,期待下一個(gè)版本加入內(nèi)置的垃圾收集器,讓程序員可以選擇由垃圾收集器收集內(nèi)存空間。 跨平臺(tái)開(kāi)發(fā) Qt開(kāi)發(fā)的程序都是跨平臺(tái)的,可以在Windows、FreeBSD、Linux(X11)、MacOSX四大主流桌面平臺(tái)上運(yùn)行,還支持 Symbian、Embedded Linux、WinCE、Maemo四種嵌入式平臺(tái),而OpenSolaris、iPhone OS、Android、Amazon Kindle平臺(tái)的開(kāi)發(fā)也正在進(jìn)行中。 Qt Creator本身可以在Windows、Linux(X11)、MacOSX上運(yùn)行。 授權(quán) Qt主要以三種協(xié)議發(fā)布:GPL、LGPL和Commercial。三種協(xié)議的代碼相同,只是協(xié)議不同而已。GPL就不用說(shuō)了,LGPL協(xié)議允許基于Qt 開(kāi)發(fā)開(kāi)源或閉源/商業(yè)軟件;Commercial協(xié)議需要花錢(qián)從Nokia購(gòu)買(mǎi),每開(kāi)發(fā)者授權(quán)價(jià)格在2000美元之下,附加一年的技術(shù)支持;只有在需要對(duì) Qt本身進(jìn)行修改,并且修改的部分不能開(kāi)放源代碼的時(shí)候,才有必要采用Commercial協(xié)議。因此個(gè)人和小企業(yè)開(kāi)發(fā)者使用Qt絕大部分情況是不要錢(qián)的。 |
信息 |
銅蟲(chóng) (初入文壇)

![]() |
| 3 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 材料科學(xué)與工程求調(diào)劑 +6 | 深V宿舍吧 2026-03-29 | 6/300 |
|
|---|---|---|---|---|
|
[考研]
|
nnnnnnn5 2026-03-25 | 11/550 |
|
|
[考研] 求調(diào)劑 +4 | 青春裁為三截 2026-03-29 | 4/200 |
|
|
[考研] 070300化學(xué)354求調(diào)劑 +6 | 101次希望 2026-03-28 | 6/300 |
|
|
[考研] 298求調(diào)劑 +3 | 種圣賜 2026-03-29 | 3/150 |
|
|
[碩博家園] 招收生物學(xué)/細(xì)胞生物學(xué)調(diào)劑 +4 | IceGuo 2026-03-26 | 5/250 |
|
|
[考研] 356求調(diào)劑 +3 | gysy?s?a 2026-03-28 | 3/150 |
|
|
[考研] 320分,材料與化工專(zhuān)業(yè),求調(diào)劑 +9 | 一定上岸aaa 2026-03-27 | 13/650 |
|
|
[考研] 304求調(diào)劑 +6 | 曼殊2266 2026-03-27 | 6/300 |
|
|
[考研] 322求調(diào)劑 +5 | 舊吢 2026-03-24 | 5/250 |
|
|
[考研] 藥學(xué)105500求調(diào)劑 +3 | Ssun。。 2026-03-28 | 3/150 |
|
|
[考研] 275求調(diào)劑 +10 | jjjjjjjjjjl 2026-03-27 | 10/500 |
|
|
[考研] 315調(diào)劑 +4 | 0860求調(diào)劑 2026-03-26 | 5/250 |
|
|
[考研] 276求調(diào)劑。有半年電池和半年高分子實(shí)習(xí)經(jīng)歷 +10 | 材料學(xué)257求調(diào)劑 2026-03-23 | 11/550 |
|
|
[考研] 求調(diào)劑 +6 | 林之夕 2026-03-24 | 6/300 |
|
|
[考研] 321求調(diào)劑 +6 | wasdssaa 2026-03-26 | 6/300 |
|
|
[考研] 0703化學(xué)求調(diào)劑 +3 | 丹青奶蓋 2026-03-26 | 5/250 |
|
|
[考研] 一志愿河工大 081700 276求調(diào)劑 +4 | 地球繞著太陽(yáng)轉(zhuǎn) 2026-03-23 | 4/200 |
|
|
[考研] 293求調(diào)劑 +7 | 加一一九 2026-03-24 | 7/350 |
|
|
[考研] 277分求調(diào)劑,跨調(diào)材料 +3 | 考研調(diào)劑lxh 2026-03-24 | 3/150 |
|