對於一個初學者,MFC和Qt哪個好下手?
01-15
我想以最短的時間實現程序的圖形界面,現在不知道MFC和QT哪個容易下手,就一個沒什麼基礎的初學者,你的建議是?
這個還是分開說吧。
1、語言本身 QT:跨平台,語法結構簡單清晰。面向對象的特性體現的比MFC明顯。代碼寫起來比較優雅,也就是說上手會快一點。 MFC:在Windows平台地位毋庸置疑,QT在windows下基本屬於非主流了。個人感覺MFC相較於QT是比較雜亂的,你可以看下MFC以及QT的實例代碼,直觀上就可以了解了。並且要寫MFC必須要知道Windows的消息循環機制。而QT開始時並不需要了解Windows底層的東西。2、學習資源
QT:基本上只有官方的官網和demo了,相關的開發論壇比MFC的少很多,畢竟敲MFC的人要多。 MFC:MSDN資源,對於初學者來說可能MSDN比較枯燥,相關論壇和那種問答的資源要多很多,一般初學者遇到的問題都可以看到前輩們的解決方法。3、IDE以及開發配置
初學者應該是windows,對於MFC,一個Visual Studio就足夠了。QT,用QT Creator,配置也不會太麻煩。 個人建議:QT。先學的qt,然後覺得MFC也不會難到哪去吧,接著就去看MFC,最後吐了
MFC?說多了都是淚。Qt的代碼確實優雅。
qt封裝得比較好。舉個例子,比如MFC的窗口,窗口沒創建之前你去調用一些方法是會assert的,你要等WM_CREATE或者WM_INITDIALOG消息到了之後才可以操作窗口。qt則是和winforms一樣在你訪問之前就默默把窗口創建好了。同樣窗口的銷毀也是自動的。
當然用戶友好性不是沒有性能代價的。窗口創建時間提前不說,和winforms一樣,改控制項風格也可能造成窗口被銷毀重建。不過你寫練手的程序甚至一些生產用的小程序的時候,應該都碰不上這種性能瓶頸。
C/C++玩好了,寫任何GUI App都不會有太大問題。本人一開始Linux下寫C,幾年後又GTK、MFC啥的沒有任何坡度。
不要學習MFC,東西太多,學著太累,還不容易有收穫,總之就是反人類。建議學習C#,傳統的圖形界面用winform,現代的用WPF,或者說是xaml,掌握了之後windows系列平台下的UI就都可以搞了。
已經有人提及, Qt入門快, 但是由於封裝性, 你幾乎感覺不到Windows API的存在. 所以如果你希望在Windows平台上深入, 當然是首要學習MFC/WPF等技術. 如果你想在前端發展, 兩者都學習也是完全可能和必要的.
對了Qt還有一個缺點, 大. 最後發布的時候大大的, 所以如果你想學習Qt的話, 精華在精剪, 而不是僅僅用官方的binary release.
弱弱的說一句, Windows平台下UI框架, MFC已經落後了, 你首先要知道微軟有哪些的UI框架/技術, 別只知道MFC.
PS: 對Qt有研究, 微軟前端技術僅僅了解. 答完才發現, 此問竟有5年之久.MFC沒飯吃,千萬不要碰。反正都要在windows上寫GUI了,還苦逼的用什麼C++,就該去用C#。
VC(MFC)、CB(VCL)、QT都用過,總體感覺CB和QT都可以專註於業務邏輯,代碼也很優美簡潔,VC沒有深入研究過,但是生成的代碼,真心不喜歡那一堆堆東西,幾乎沒做過什麼項目。QT現在慢慢發力移動APP了(for android),雖說還不完善。總之,我覺得Qt更值得學習。
如果是因為要交大作業之類的原因,推薦.net或者ElectronWinform拖控制項最快,WPF需要了解XAML,Electron需要HTML+CSS具體選擇還是看你個人喜好
不用考慮、、直接Qt、、拖控制項有Qt Designer,簡單界面就可以搞定了、、複雜的自己代碼組合、、、圖表展示可以用qwt、、時尚個性或者移動端用有qml、、現在去學MFC、、十幾年前的東東,微軟都放棄的貨、、、Qt開發,一般程序基本不用了解平台特性、、MFC又必須了解win的消息機制,代碼還都是宏那麼難看,變數類型折騰的都認不出來、、程序也沒有一點平台移植性、、選哪個不言而喻啊、、、而且現在Qt是一整套框架了、、話說拿MFC或者GTK和Qt比,一定程度都小看Qt、、
我做PC客戶端已經做了6 、7年了,我覺得說實話,如果是為了謀生,在一些非互聯網領域,Qt會好那麼一點點,對於初學者來說Qt的學習難度要大大低於MFC,但是同時對於初學者來說Qt有些封裝過度,以至於你不需要了解Windows開發的底層知識也可以開發一些比較好的應用,換而言之,你對Windows操作系統的理解水平會下降很多或者至少慢很多,但是MFC的類比如CWnd,CDC都是最基礎的Windows元素封裝,學習MFC對你理解Win32編程明顯會有更大幫助。
我來說點實際的吧,這兩個我都用過。我的建議是都不用學I/O內存管理
多線程
socketIPC動態庫消息機制(win)信號機制(linux)數據結構(鏈表/hash/紅黑樹)以上才是支撐整個世界恆久不變的東西。。。你要學得是自己把它們給封裝成library,簡稱造輪子。如果你造的好,就可以像 @vczh一樣,成為人生贏家。。。當然了,MFC跟QT依然是不錯的C++類庫,你自己造輪子也可以參考啊。。。
所以你可能還是要學。。。汗。。。一直在三天打魚兩天晒網的MFC,界面太糾結了。不過感覺寫多了很簡單啊。
MFC上百個類,上萬個介面,如果我長命千歲,相信能學得完,只能說學完,而不是說都會用,甚至有大部份,那怕我長命萬歲,也可能不會用得到。你應該知道我的意思吧。在選QT之前,我想問還有其他選擇不?那個MB太大先不說,他的類、類的繼承、代碼樹的開發模式註定了要重複造輪子,QT的缺點就不一一而言了,如果你要學習的話,bolt還可以,當然功能還有待完善,但是他的邏輯框架不錯,部份走出傳統UI的模式,但也不是完全走出。還有就是LEA(LxzAppEngine的簡稱),跨平台的,他跟傳統的UI完全不一樣,走的是數據樹的開發模式,是我目前用過最牛逼的。我轉發過它的視頻,是一位知乎大牛給的,目前好像也沒提供下載,如果你們有需要,我這裡有,EMAIL我就行。
在校學生的話,學web開發 工作的話,直接用WPF不是更好
windows做UI學C#,用WPF
我是先學習MFC的,當時覺得很複雜,最近才學習的QT,感覺相對於MFC來說好上手多了,不知道是不是因為被MFC虐過之後才這麼覺得,總之新手建議QT沒錯的~
QT吧,我現在也開始正學習QT,新手一個,
變數類型折騰的都認不出來( @渡世白玉 ),這句話深有感觸..在mfc上花了大量時間,還不大清楚,現在工作中全用QT了,因為要跨平台,但在招聘網站上一查,mfc招的還是多,如果對比一下數量,呵,還比QT多,但不知是不是最後的掙所,唉,畢然我也花了一些時間在這上面,不大可能又去用C#(與C++混編),c#與c++通訊不大方便(雖然可以用),涉及到一些數據類型轉換,c++打包成dll,總覺得不大爽感,在網上查找了一些託管c++的案例,發現都 是前幾年的事了............
推薦閱讀:
※MFC為什麼難用,框架的敗筆是?
※DirectUI與GUI框架有什麼區別,如MFC,QT,wxWidgets的區別是什麼?
※電腦桌面背景可以總是前置嗎?
※老師教的MFC,可是win10不能安裝vc++6.0怎麼辦?