引用orochi717的話:
……
對于QT,其實(shí)也是一個(gè)不錯(cuò)的選擇。Linux,C++寫界面基本上都是用它。這個(gè)東西是跨平臺的。手機(jī)上也有。
問題就是這個(gè)東西到底免費(fèi)還是不免費(fèi)誰的不知道(linux上是免費(fèi)的,我的是windows)。他又插件直接集成進(jìn)VS2005,2008,然后想MFC那樣花界面。如果熟悉,開發(fā)效率跟MFC是一樣的。網(wǎng)上我以前找過,還是有不少的,畢竟這個(gè)東西也很久之前就開發(fā)出來了。 問題是這個(gè)很難招到這樣的人才。得靠自己去培養(yǎng)。
……
對于QT的描述,我不認(rèn)同仁兄的看法。
首先,QT有商業(yè)版本和開源版本。被NOKIA收購后,開源版本使用的協(xié)議是LGPL,就是說,你把QT當(dāng)作是一個(gè)庫,你不修改庫只是調(diào)用庫的話,是免費(fèi)的,而且你的代碼不需要開源,只有針對QT庫的改動部分才需要開源,所以,LGPL這個(gè)協(xié)議是很適合開源庫的商業(yè)用途的。
其次,使用QT開發(fā)標(biāo)準(zhǔn)GUI界面,比MFC的開發(fā)效率至少高一個(gè)數(shù)量級。因?yàn)镼T庫比MFC龐大很多,而且QT的許多機(jī)制比MFC先進(jìn)很多。如果認(rèn)為QT僅僅是一個(gè)跨平臺界面庫,那就小看它了。我要說的是,它不但是一個(gè)通用的跨平臺的面向?qū)ο蟮膽?yīng)用程序接口庫(包括GUI、數(shù)據(jù)庫、網(wǎng)絡(luò)、多線程、XML、數(shù)據(jù)容器和算法等,常用的編程資源都有封裝,就是說,這些都可以跨平臺,而不僅僅是界面),更是一種C++語言的擴(kuò)展,一種編程平臺和應(yīng)用程序框架。信號和槽的機(jī)制簡化了對象之間的通信,比MFC的消息映射直觀多了;界面的布局管理機(jī)制使開發(fā)人員可以很輕松地編出優(yōu)雅的窗體;界面語言翻譯機(jī)制也很方便實(shí)用;QObject容器管理可以看到Qt在內(nèi)存管理方面的努力;擴(kuò)展的foreach循環(huán)結(jié)構(gòu)也向現(xiàn)代語言靠攏;QT在界面層多封裝了一層QStyle,開發(fā)者甚至可以使用CSS定制出一套界面來……如果僅僅是開發(fā)標(biāo)準(zhǔn)的GUI(使用通用的控件),開發(fā)效率會很高,接近于.NET窗口編程。
第三,QT自帶的控件庫比MFC豐富多了,而且還有很多擴(kuò)展庫和第三方的控件庫,同樣是LGPL開源的。QT提供了VS各個(gè)版本的插件,因此在VS上開發(fā)QT程序比使用其它UI庫方便很多。
第四,運(yùn)行效率問題。QT使用了很多高級機(jī)制,使它的效率確實(shí)比MFC。比如,QT在界面層多封裝了一層QT樣式,在運(yùn)行時(shí)可以使用不同風(fēng)格的樣式,即類似于換膚功能(不同的是,它由QT框架直接提供)。所以執(zhí)行效率比不上原生操作系統(tǒng)的界面庫(如MFC、wxWidgets等)。但是,QT界面庫的效率還是比WPF、.Net、Java高幾個(gè)數(shù)量級的,畢竟QT開發(fā)出來的是機(jī)器碼,不是虛擬機(jī)或解釋程序可以比擬的。
第五,程序大小的問題。QT庫的確很大,最基本的兩個(gè)動態(tài)庫文件,QtCore4.dll有2M多,QtGui4.dll有7M多(4.6.2),所以在發(fā)布軟件的時(shí)候,還要帶上這些動態(tài)庫文件。當(dāng)然,使用QT靜態(tài)鏈接庫要好一點(diǎn)。至于使用靜態(tài)鏈接好,還是使用動態(tài)鏈接好,這里我不加討論,沒有最好,只有最適合的(MFC也有這個(gè)問題)。
第六,跨平臺問題。跨平臺的確很誘人,尤其是做嵌入式設(shè)備的。樓主的項(xiàng)目是什么我不了解,因此這里不妄加評論跨平臺問題。
第七,人才問題和培訓(xùn)問題。在中國,MFC/Win32開發(fā)人員是最多的(不談虛擬機(jī)平臺編程),因?yàn)閷W(xué)校學(xué)的就是這個(gè)。而會QT的真的很少。不過鑒于Nokia的大力支持和開源為LGPL的手段,我相信會QT的會越來越多。QT的學(xué)習(xí)也不會想像中的難,畢竟它只是一個(gè)庫(應(yīng)用程序框架)而已,上手不會太難,不會比MFC久。
第八,幫助資源問題。QT的資源很豐富,其自帶的Assistant相當(dāng)于微軟的MSDN,各個(gè)接口和編輯元素的說明都很詳細(xì),不過都是英文的,跟MFC一樣。網(wǎng)上QT社區(qū)也不少。畢竟,QT比MFC,甚至比Windows還年長!
最后,聲明一下,我不是QT的槍手。程序員無槍手。他們都很純樸。我們公司仍然在使用MFC,但是嵌入式設(shè)備裝上一個(gè)正版Windows XPE,畢竟太奢侈了。另外用MFC做界面真的很痛苦,我們公司的好幾個(gè)項(xiàng)目都在向QT轉(zhuǎn)型。在界面庫選型上,我們也花了不少時(shí)間,從開源的wxWidgets,到商業(yè)的一些大大小小的界面庫,最后選中QT。
轉(zhuǎn)自:http://blog.csdn.net/flyoxs/article/details/5639611
聯(lián)系客服