做windows界面,用QT還是MFC?


使用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下的界面開發技術還有很多,歡迎大家關注太科羅技,並在下方積極留言討論。


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


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


作為做了近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不行。


謝邀。

具體選擇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。


兩者之間二選一的話肯定選Qt了,如果再考慮開發效率與運行效率的話,可以在Python平台上使用Qt的Python綁定庫PyQt,再配合C++,主體用Python語言,界面部分用PyQt搭建,核心演算法部分用C++封裝成動態庫DLL文件,在Python里去調用。這樣是一個不錯的方案,Python部分縮短了開發時間,C++部分保證了運行速度,只是前提是,你要會用C++寫DLL,在Python里會調用DLL。


?先下載個電腦管家,卸載金山毒霸,然後再下載個360,去卸載電腦管家,再下載個瑞星,去卸載360,再下載個金山衛士,去卸載瑞星,再下載個小紅傘,去卸載金山衛士,再下載個金山毒霸,誒,怎麼又繞回來了??????重啟電腦後即可嘞!??


兩者皆可,看你熟悉那個方面和實際項目需求了,如果要是跨平台的,建議還是Qt吧,一次編寫,處處編譯,Linux,Mac皆可。我個人偏向還是Qt一些,簡單快捷,可以自定義樣式qss,qml等,可以快速的構建美觀,整潔的界面,這在嵌入式中經常會用到,當然MFC也可以實現,但構建自己所需的界面,實現起來比較麻煩,不靈活,好多東西需要自己集成,重寫,自己封裝,不值得推薦。


兩者沒有好壞之分,需要看應用場景。如果是界面要求不高,穩定性和效率要求高的工業軟體,MFC是最好的選擇。如果是界面要求美觀,跨平台使用,QT是最好的選擇。但是要注意的是QT企業用是需要授權費的。另外,windows上的界面還有其他選擇wpf,direct ui等。這裡著重提一下direct ui,目前可以找到比較好的就是duilib這個界面庫,開源穩定易用高效。關注我一起探討呀!


當然是QT了,MFC是多少年前的?已經沒有人用了吧?如果是開發windows桌面應用,還是用C#吧,一個原因是開發速度快,最重要的是可以用winform或者wpf開發windows界面,開發速度都要比QT快很多,運行效率也不差的。


推薦閱讀:

修改shell最大並發數為dos做準備
秩態網研製白皮書6:秩態網(OSN)符號
MSYS2---minimal system
如何運用DEAP-XP 1進行簡單的效率分析
進程間通信

TAG:操作系統 | Windows | Qt | 科技 |