做windows界面,用QT還是MFC?

weibov5976


其實選什麼學習還得根據自身的需求。語言不分好壞在於人。精通才是正道。當下window下流行的編程語言,有vb,mfc,c sharp,。如果沒啥限制,建議第三個吧,簡單粗暴上手快,開發效率也高。如果公司或硬件限制必須用mfc或其他語言,那學就是。都是微軟的產品,我開發項目都用過,知識通用。至於qt封裝是全,相對微軟自家的產品,用的人少些。問題多靠自己解決


工控編程


使用Qt吧,前提是在這兩者下進行選擇。既然提到了Qt和MFC,我想題主肯定是一個C++的開發者。其實,在我看來,Windows下開發界面程序,還有很多其他的選擇。下面我就連同Qt、MFC一起來介紹一下幾種常用的界面開發框架。

  1. Qt,Qt之前是被諾基亞作為塞班操作系統的主力開發工具,後被廣泛應用於PC領域的開發。Qt最大的優勢在於它的跨平臺特性,可以實現一套代碼編寫不同平臺下的應用程序,目前多用於Linux系統下的GUI程序開發,Windows下也有一些使用。

  2. MFC.MFC的全稱叫做Microsoft Foundation Class(微軟基礎類庫),它是將Windows的基礎api封裝後的一個GUI開發框架。它最大的優勢是可以直接使用Windows的系統api,實現程序性能的最大化。它的劣勢在於邏輯太過複雜,會讓初學者望而卻步,事實上,很多大學計算機課堂上都已經不在講授mfc(MFC背戲稱為沒飯吃)了。

  3. C#.咦,不是在講C++嗎,事實上,很多Windows下的程序都是使用C#快速開發出界面,在用C++實現後臺控制,這樣既能快速開發出好看美觀的界面(C#優勢所在),又能實現高效的後臺(C++的優勢),豈不快哉。

  4. WEB.既然C#都能開發GUI,那麼比C#語法還要簡單的web開發語言不行嗎?當然可以了。這裡舉個栗子,大名鼎鼎的PC端詞典軟件有道英語詞典正是WEB&C++搞定的。網易的大牛們使用WEB(如HTML5)技術快速開發出酷炫的界面以及網絡通信模塊,再用c++實現算法及其他控制模塊,就這樣最大限度的實現了界面的美觀性和程序性能的整合。

當然,Windows下的界面開發技術還有很多,歡迎大家關注太科羅技,並在下方積極留言討論。

太科羅技


強烈強烈建議你選擇QT,原因如下:

1)QT比MFC用起來要簡單的多,我當年花了很長時間都沒搞明白MFC那一套運行機制,QT很快就能上手用起來了。

2)QT跨平臺,MFC只能在Windows上用。這個跨平臺我最近深有感觸,我們做的產品在戶外測試經常需要通過上位機查看運行的參數,帶著電腦看沒問題,但是不是很方便,於是我將windows下開發的QT程序直接換個工具鏈,就編譯成安卓程序了,這樣使用手機、平板也可以多人同時使用了,非常便利。

另外做嵌入式Linux的童靴肯定知道QT經常被用來開發嵌入式設備的ui。


TopSemic


簡單原則是:你熟悉哪個就用哪個,如果都不熟悉,建議先學Qt。

首先,Qt支持跨平臺,MFC只支持Windows平臺。

其次,Qt開發效率高,MFC運行效率高。MFC是直接封裝Windows API,運行效率略有勝出,但相比之下開發效率明顯偏低。例如開發同樣的複雜用戶界面,Qt使用控件配合佈局管理配合即可做出精美界面,而MFC需要掌握“自繪”和擴展編程,才可能達到類似效果,費心費力多了,甚至開發資歷不深的人還不能勝任。

第三,源代碼對比,你會發現Qt的源代碼更優雅,閱讀它你會學到很多面向對象的特性和多種設計模式,而閱讀MFC的源代碼你也會學到消息機制,不過由於歷史原因,裡面使用了很多宏進行代碼封裝,顯得佶屈聱牙。

以上就是一名多年IT資深技術人的看法,以供參考。


超級碼農衝呀


QT吧,windows平臺畢竟不是長久之計,用QT後面方便轉嵌入式開發


用戶1284002920930


electron試試?


大鐘樓145062414


大部分情況優先使用qt,開發用什麼庫主要考慮成本,如果你需要大量調用windowsapi 對界面設計沒有太高要求可以考慮用mfc,如果不需要直接用qt吧,mfc好處是很多老人本來就會,winapi做了比較好的封裝,不需要引用庫。qt的優點就不用說了,太多了,比如跨平臺,界面和業務代碼隔離,界面設計方便基於qss等


老夏課堂夏曹俊


做Windows界面程序,最好用的是wpf和uwp。既然說了是Windows界面程序,就不需要考慮在非Windows平臺上跑,此時說兼容性是多餘的。mfc微軟自己都是鼓勵淘汰的東西,舊程序之所以在新系統上顯示模糊,原因就是舊的mfc框架控件沒有使用新系統的圖像渲染技術。


TonyDeng


作為做了近2兩年windows application的人來說,我直接說Qt!首先我主要做pc和下位機通信的app,如串口、tcpip、總線類等。選qt理由如下:【僅從我的經歷來講】

1、Qt開發效率高。我第一個項目前幾個項目用的MFC,平均時長3個月,一個軟件80%的時間都放在界面上去了。然後後面開始使用Qt,一個月能做好幾個app沒壓力,界面佈局很方便,不用像MFC去一個一個控件拖動。

2、Qt庫簡單易懂。個人的感覺就是MFC與win api聯繫太大了,你要玩轉MFC,必須要把windowsapi相關知識搞得明明白白的。而Qt庫把每一個功能都封裝得很好,很容易去使用,不需要沒事就百度怎麼用。

3、MFC已經在淘汰邊緣了。到如今Qt還在不斷更新,我目前使用的是Qt5.9。在平時招聘的時候,也很少看到有公司讓你專職做MFC,要麼Qt,要麼C#。

4、Qt跨平臺。我當初換Qt的一個原因還是,我以後如果不做windows了可以換linux上位機,Qt可以做到很好的跨平臺,而MFC不行。


judesmorning


具體選擇QT還是MFC,這要根據題主的需求來決定。如果你入職一家公司,做的是老項目的維護,而原有項目是採用MFC來開發,那麼當然,你沒得選,只能老老實實的繼續MFC,雖然這玩意寫起來真的很虐心。如果是一個全新的項目,那麼還是首選Qt。

下面根據自己的認識,推薦幾款Windows下開發界面開發常用技術。

1)Qt

號稱可以跨平臺,語法結構簡單清晰。面向對象的特性體現的比MFC明顯。代碼寫起來比較優雅,也就是說上手會快一點,最新版本支持的特性QML,可以讓我們用JS,CSS來繪製客戶端界面,寫起來效率也是蠻高的。缺點就是文檔可能沒有MFC那麼齊全,基本只有官方的官網和Demo,而且發佈包體積會比較大。

2)MFC

全稱Microsoft Foundation Classes(微軟基礎類庫),可以算的上是上古產品了吧,目前除了維護老項目,應該很少有團隊使用MFC來開發了吧。基本上MFC == “沒飯吃”。建議如果你是初學者,界面開發還是不要選擇MFC了。它唯一的好處就是微軟的MSDN文檔比較齊全,相關論壇和那種問答的資源要多很多,一般初學者遇到的問題都可以看到前輩們的解決方法。不過目前它已經被其親爹微軟拋棄了。

3)Duilib

目前已開源,是一款強大的界面開發工具,可以將用戶界面和處理邏輯徹底分離,極大地提高用戶界面的開發效率。唯一不足的是原開發者已經停止維護,很多都是個人在維護,出了問題的話,只能自己去摸索,Debug。下面是一款個人使用Duilib開發的迅雷播放器界面效果。

最後附上一些基於Duilib開發的軟件不完全列表(歡迎大家補充指正):

百度: PPS 愛奇藝 百度殺毒 百度衛士 91助手

阿里: 釘釘 支付寶安全控件 PP助手

書生雲: 書生企業雲盤

微軟: 微軟壁紙

網易: 易信 雲音樂 荒野行動PC版

華為: 華為網盤

金山: 金山快盤

京東: 咚咚

cctv: cbox

酷我: 酷我音樂盒

蘑菇街: TeamTalk

火絨: 火絨安全軟件

盤古: 盤古越獄工具

順網: 網維大師 91y

網狐: 網狐經典版

墨跡風雲: 墨跡天氣

zoomcloud: Zoom 視頻會議

搜狗: 搜狗手機助手

沃通: 沃通代碼簽名工具

驅動人生: 驅動人生 人生日曆

維棠: 維棠

深圳市北斗智研科技: 智能辦公助手 ERP管理系統

4)Electron

這玩意應該是這幾年才火起來的吧,宣城自己可以通過使用JavaScript、HTML和CSS構建跨平臺的桌面應用程序,讓人們感覺JS真的有一統天下的趨勢(Web、移動端、PC客戶端)。開發效率真心的高,不過貌似商用上還不是特別的多,典型的成功案例目前知道的有VSCode,Atom。


分享到:


相關文章: