轉(zhuǎn)帖|行業(yè)資訊|編輯:龔雪|2016-04-11 09:17:02.000|閱讀 2103 次
概述:MFC(微軟基礎(chǔ)類庫(kù))是專門為windows設(shè)計(jì)的一個(gè)用于開發(fā)圖形用戶界面的類庫(kù);Qt可以運(yùn)行在Windows、Mac OSX、Unix、還有像Sharp Zaurus這類嵌入式系統(tǒng)中,Qt是完全面向?qū)ο蟮摹?/p>
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
用戶選擇圖形開發(fā)環(huán)境的時(shí)候,幫助文檔是否周全是左右其選擇的重要因素。Visual開發(fā)環(huán)境的幫助文檔MSDN(這個(gè)還要單獨(dú)掏錢購(gòu)買)非常的龐大,有10個(gè)CDROM光盤。它包羅萬(wàn)象,涵蓋廣泛。但是難免有泥沙俱下,主題模糊,關(guān)鍵信息不突出的遺憾。其鏈接設(shè)計(jì)的也很糟糕,通過(guò)鏈接很難從一個(gè)類跳轉(zhuǎn)到其父類或者子類以及相關(guān)的類。如果你搜索一個(gè)關(guān)鍵字,不管是Visual C++、Visual J++、Visual Basic,只要包含這些關(guān)鍵字的信息統(tǒng)統(tǒng)的返回來(lái)。
Qt的文檔設(shè)計(jì)的相當(dāng)優(yōu)秀,其文檔完備且詳細(xì)的覆蓋了Qt的方方面面,竟然僅有18M。每一個(gè)類和方法都被詳盡描述,巨細(xì)靡遺,舉例充實(shí)。
使用MFC,如果要顯示unicode,在編譯鏈接時(shí)必須用到特殊的參數(shù)(和改變可執(zhí)行文件執(zhí)行的入口),必須在每個(gè)string前面加上T,將char修改成TCHAR,每個(gè)字符串處理函數(shù)(strcpy(), strdup(), strcat()...... )都要改變成另外的函數(shù)名。更令人惱火的是支持Unicode的軟件竟然不能并不支持和Unicode的DLL一起工作。當(dāng)使用外部DLL來(lái)開發(fā)的時(shí)候這是個(gè)很嚴(yán)重的問題,但是你毫無(wú)選擇。
使用Qt,字符串用QString來(lái)處理,其本身是與生俱來(lái)的Unicode,不需要改變什么東西。不要在編譯/鏈接時(shí)增添參數(shù),不要修改代碼,只需要使用QString就可以了。QSting類功能強(qiáng)大,你可以廣泛地使用它,并且不要擔(dān)心Unicode問題,這使得轉(zhuǎn)換為Unicode非常的方便。QSting提供了轉(zhuǎn)換為char * 和UTF8的函數(shù)。顯然,MFC的CString的設(shè)計(jì)相比于Qt的QString設(shè)計(jì)有著巨大的不同。CString以char *為基礎(chǔ)提供了很少的功能。它的優(yōu)點(diǎn)是當(dāng)需要char *類型的時(shí)候,可以直接使用CString類型。乍看起來(lái)這個(gè)好像是個(gè)優(yōu)點(diǎn),其實(shí)實(shí)質(zhì)上還是有很大的缺陷的,特別是可以直接修改char * 而不需要更新類。在轉(zhuǎn)變?yōu)閁nicode時(shí)這個(gè)也碰到很大的麻煩。(CString隨編譯選項(xiàng)可以是Unicode版)相反,QString在內(nèi)部以u(píng)nicode存儲(chǔ)string,需要時(shí)提供char *功能。實(shí)際上很少用到char *,因?yàn)檎麄€(gè)Qt的API用文本的方式響應(yīng)QString參數(shù)。QString還附帶許多其他的功能,比如自動(dòng)分享QString的內(nèi)容。這是一個(gè)非常強(qiáng)大的類,你會(huì)喜歡在很多地方用它的。
使用MFC是可以國(guó)際化的,但是需要將每一個(gè)字符串放在一個(gè)字符串表中,在代碼中到處使用LoadString(IDENTIFIET),然后轉(zhuǎn)化這些資源到DLL中,翻譯字符串到所需要的語(yǔ)言,改變圖形界面,然后調(diào)用程序使用這個(gè)DLL。整個(gè)過(guò)程是如此的繁瑣,可謂牽一發(fā)而動(dòng)全身,考慮的事情要面面俱到。
使用Qt的時(shí)候,只需要將字符串置于函數(shù)tr()中,在程序開發(fā)中這算是舉手之勞,可以直接在代碼中改變字符串的參考。Qt Linguist是Qt的一個(gè)工具,能夠提取所有待翻譯的string并按照友好的界面顯示出來(lái)。這個(gè)用戶界面非常適合翻譯,使用字典,顯示字符串內(nèi)容,恰當(dāng)?shù)膗nicode顯示,快捷方式?jīng)_突檢測(cè),檢測(cè)未翻譯的字符串,檢測(cè)字符串修改情況,功能齊全。這個(gè)軟件可以供沒有任何編程經(jīng)驗(yàn)的翻譯者使用。同時(shí)該軟件在GPL的版權(quán)下發(fā)布,可以按照你的需求來(lái)修改它。翻譯以后的文檔保存在XML中,適合軟件復(fù)用的原則。為軟件增加一種新的語(yǔ)言版本僅僅是用Qt Linguist產(chǎn)生一個(gè)新的文件而已。
使用MFC,一部分開發(fā)過(guò)程要依靠“resources”,在很多的案例中開發(fā)者必須使用它們。這樣會(huì)導(dǎo)致如下的后果:除了Visual Studio,你很難使用其他的工具來(lái)完成開發(fā)。 資源編輯器僅有有限的功能,比如:通過(guò)Dialog編輯器不可能改變所有的屬性,一些屬性可以改變,另一些屬性則不可能改變。
然而Qt并沒有資源的概念,這就解決了以上所提到的問題。Qt提供了一個(gè)腳本使得能將其編入你的代碼中。對(duì)于界面設(shè)計(jì),Qt Designer則創(chuàng)建了可讀的代碼。
在發(fā)布基于MFC的軟件時(shí),必須依靠存在于客戶電腦上的MFC。但是這是不安全的,同樣是MFC42.dll,可以基于相同的庫(kù)得到3個(gè)不同的版本。通常,需要檢查是否擁有正確的MFC42.dll版本,如果不是,就升級(jí)它。
Qt則沒有這個(gè)風(fēng)險(xiǎn),因?yàn)镼t壓根就沒有“升級(jí)整個(gè)系統(tǒng)”這個(gè)概念。
MFC是專為Windows設(shè)計(jì)的,而Qt是跨平臺(tái)的。所以MFC編寫的程序的運(yùn)行速度、響應(yīng)時(shí)間都優(yōu)于Qt。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)