有些人說QT比MFC簡單,QT封裝得太好了,給初學者錯覺,QT很簡單。QT實現的功能比MFC更多(多到有些時候你覺得QT真TM啰唆,但是有時又體會到他啰唆得很強大很有柔性),顯然比MFC代碼更多,運行效率更低。但是那么多功能你要去學怎么用,有些時候還要去想他是怎么實現的,同樣麻煩。QT幾乎每個類都有 privat 數據類。它只提供public類給你用,而且幫助文檔也只有public接口類的說明。有些時候要弄清楚,不得不看源文件。就連QT最出名的SIGNAL/SLOT機制,有多少初學者能知道SIGNAL是protected的,所以不能在類外emit。SLOT是用類自己的函數qmetacall調用,所以不管是public protected private都能接受外部信號,的啊。
QT用着很happy,但是缺點是基礎資料太少了,底層的東西QT資料幾乎不提,出了問題你幾乎只有發呆。QT區很多朋友,用到是在用,界面等也編得好看,但是基礎確實不牢靠,甚至很多基本的C++問題也在問。因為他們覺得QT是簡單的,不用打好基礎。但是在QT資料里面幾乎沒有基本知識。。
MFC /OR VC++(WIN32) 這個就不一樣了,看着挺痛苦的,但是資料一大把。特別是基礎知識。所以都說學會了MFC的人去學QT簡單很多的原因。比如孫薪老師的那個系列。這樣對事件循環等有較為深刻的認識。缺點就是MFC入門台階太高了,有點混亂。還有什么候傑的深入淺出MFC,把RTTI等等東西寫的非常清楚。這些東西就是QT里面的metaobjet。
所以我覺得:
1、如果你基礎不怎么樣,比如剛學了C++想找個GUI庫來玩,也只是隨便玩玩,QT包裝很好,幫助文檔也很好。你就直接用QT,反正出了某些奇怪的問題,也沒關系。。
2、如果你是想學好,想學得稍微深入,我覺得QT就很難。還是先學VC的東東吧。學好了基礎再用QT。QT的開發效率高是針對會用的人而言的。
3、如果有高人指導,或者環境很好,或者只用QT的很小一部分,那學QT就輕松很多了。
做UI不是MFC的強項,可以用qt或者Duilib以及winform,WPF來實現
如果不想安裝幾十M的.net framework安裝包,可以用Duilib.
不過qt生成的文件比較大,個人傾向用Duilib.
qt的優勢是跨平台。