回覆列表
  • 1 # 小羊看科技

    一般有兩種,一種是MFC,一種是Qt。

    MFC程式設計需要使用Document/View模式以及模板(template),如果不使用的話,程式設計將變得異常困難。而且,模板(template) 設定了固定的結構,若所需結構乃模板未定義之結構,則程式設計難已。例如,劃分一區域使顯示兩個檢視(view)於兩個文件(document)。還有一個經常的問題是:模板(template)建立了檢視(view)卻無法訪問(access)它,文件(document)要做完所有事情,但是這經常會出現問題。

    MFC的根本目的是訪問包裝起來的用C語言寫的windows的API。 這絕非好的面向物件的設計模式,在很多地方,你必須提供一個包含15個成員的C語言的struct,但是其中只有一個與你所期望的相關,或者必須用舊式的引數來呼叫你的函式。

    Qt是一個功能非常完善的c++跨平臺圖形庫,其實與其說圖形庫倒不如說它是一個與MFC類似的應用框架。Qt本身就是使用c++語言實現。

    兩者優缺點對比:

    訊息迴圈

    MFC是事件驅動的架構。要執行任何操作,都必須是對特定的訊息作出響應。Windows對應用程式傳送的

    資訊數以千計,遺憾的是,要分清楚這些分繁蕪雜的訊息是很困難的,並且關於這方面的文件並不能很好的解決這些問題。

    Qt的訊息機制是建立在SIGNAL()傳送和SLOT()接受的基礎上的。這個機制是物件間建立聯絡的核心機制。利用SIGNAL()可以傳遞任何的引數。他的功能非常的強大。可以直接大傳遞訊號給SLOT(),因此可以清楚的理解要發生的事情。一個類所傳送的訊號的數量通常非常的小(4或者5),並且文件也非常的齊全。這讓你感覺到一切盡在掌握之中。SIGNAL/SLOT機制類似於Java中listener機制,不過這種機制更加輕量級,功能更齊全。

    建立介面

    MFC無法建立大小動態可變的子視窗,必須重新手動修改程式碼來改變視窗的位置(這恰好解釋了為什麼windows裡的dialog是不可以改變的)這個問題在軟體進行國際化翻譯的時候更加嚴重,因為許多國家表達相同意思需要更長的詞彙和句子,必須要對每個語言的版本重新修改自己的軟體。

    Qt還提供了一個圖形使用者工具,Qt Designer,可以用來幫助建立使用者介面。可以修改所使用的任何控制元件的屬性。不用將他們放在嚴格的位置,可以透過layout完美的組織他們。這個工具所產生的程式碼我們是可以實際上閱讀並且可以理解的。生成的程式碼單獨放在一個檔案裡,在程式設計的同時,你可以隨心所欲的多次重新生成使用者介面。

    Qt Designer可以讓你完成許多在MFC中不可能完成的任務,比如用預先填好的生成listview,在每個tab上用不同的view來使用tab 控制。

    Qt還提供了一個圖形使用者工具,Qt Designer,可以用來幫助建立使用者介面。可以修改所使用的任何控制元件的屬性。不用將他們放在嚴格的位置,可以透過layout完美的組織他們。這個工具所產生的程式碼我們是可以實際上閱讀並且可以理解的。生成的程式碼單獨放在一個檔案裡,在程式設計的同時,你可以隨心所欲的多次重新生成使用者介面。

    Qt Designer可以讓你完成許多在MFC中不可能完成的任務,比如用預先填好的生成listview,在每個tab上用不同的view來使用tab 控制。

    使用MFC,一部分開發過程要依靠“resources”,在很多的案例中開發者必須使用他們。這樣會導致如下的後果:

    出了Visual Studio,你很難使用其他的工具來完成開發。

    資源編輯器僅有有限的功能,比如:透過Dialog編輯器不可能改變所有的屬性,一些屬性可以改變,另一些屬性則不可能改變。(譯者注:下面還有兩條陳述MFC缺點的例項,但我感覺這些已經夠說明問題了,暫時刪節不譯)

    然而Qt並沒有資源的概念,這就解決了以上所提到的問題。Qt提供了一個指令碼使得能將編入你的程式碼。對於介面設計,Qt Designer則建立了可讀的程式碼。

    價格

    一旦你購買了Visual Studio,你將免費的獲得MFC SDK。

    Qt在Unix上是可以免費獲得其遵守GPL版權的版本(譯者注:現在在windows 上也可以免費獲得其GPL版本)。如果要開發不公開原始碼的軟體,必須購買Qt的授權。在特定平臺下,每個開發者購買一個永久性授權,並獲得一年的技術支援。(譯者注:後面關於購買價格等問題刪去,因為價格不固定,如果有疑問請到官方網站查詢價格)

    釋出

    在釋出基於MFC的軟體時,必須依靠存在於客戶電腦上的MFC。但是這是不安全的,同樣是MFC42.dll,可以基於相同的庫得到3個不同的版本。通常,需要檢查是否擁有正確的MFC42.dll版本,如果不是,就升級它。但是升級MFC42.dll會改變很多軟體的行為。這讓我感到很不舒服,如果使用者在安裝我的軟體以後導致其機器宕機該怎麼辦?

    Qt則沒有這個風險,因為Qt壓根就沒有“升級整個系統”這個概念。

    感覺MFC相比QT的確有很多的不足,但MFC的使用者群巨大。Qt要想短時間撼動MFC的地位,還是有點難度的。

  • 2 # 鼴鼠科技

    C++標準中並沒有包含圖形介面庫(GUI),這也使得C++開發圖形化介面需要依賴於第三方的庫。以下是常用的幾個圖形介面庫,供大家參考借鑑。

    1)Qt

    Qt是一種跨平臺的應用程式和UI框架

    它包括一種跨平臺的類庫,整合開發工具和跨平臺的IDE,使用Qt,你可以編寫基於Web的應用程式,並且透過許多的桌面和應用程式來部署它們,而無需重寫程式碼。

    2)Wx Widgets

    wxWidgets是一個C++庫,主要是讓開發者為Windows,OS X,Linux和UNIX在32-bit和64-bit的體系下開發應用程式,同時也為移動的平臺包括像Windows Mobile,iPhone SDK和嵌入式的GTK+。

    3) EasyX

    EasyX 是針對 C++ 的圖形庫,可以幫助 C 語言初學者快速上手圖形和遊戲程式設計。

    比如,可以用 VC + EasyX 很快的用幾何圖形畫一個房子,或者一輛移動的小車,可以編寫俄羅斯方塊、貪吃蛇、黑白棋等小遊戲,可以練習圖形學的各種演算法,等等。

    4)FLTK

    FLTK(發音“Fulltick”)是UNIX/Linux(X11),Microsoft Windows和MacosX上一套跨平臺的C++ GUI工具包。FLTK提供現代圖形使用者介面的功能而沒有膨脹(諤諤...這個地方蛋疼了,路過的知道的說一下,原話:FLTK provides modern GUI functionality without the bloat),並且支援3D圖形,依靠OpenGL和它內建的GLUT模擬。FLTK被設計成小巧和模組化足以實現靜態連結,但作為一個共享庫其做工很精細。FLTK也包括一個傑出的UI生成器,叫做FLUID,它能夠在秒內建立應用程式。

    5) GTKMM

    gtkmm 是官方的GTK+的C++介面,GTK+是當前最流行的圖形介面開發庫之一。使用gtkmm,你不但可以從程式碼還可以用Glade來建立使用者介面。不過需要libglademm的配合。gtkmm是自由軟體,遵循LGPL(GNU Library General Public License)。

  • 3 # afantee

    要看選擇哪個平臺,基本來說可以選擇的有Qt(跨平臺)、wxWidgets(跨平臺)、GTK(Linux平臺)等等,具體選擇建議根據實際需求。

  • 4 # 程式設計師幫幫忙

    在Windows平臺一般是用VC中的MFC,還有一個是QT,初學者建議先去學mfc,等過段時間再去學qt就會覺得比較輕鬆。

  • 5 # 一個程式設計師的奮鬥史

    回答這個問題之前,我們先來看看常用的C++介面庫都有哪些?

    1、Qt

    放在第一位,也是重點推薦的,絕對是提高生產力,解放雙手的好幫手。文件齊全,原生態跨平臺支援,API相比MFC不知道優雅了多少倍。目前版本的QSS可以讓你很方便的用C++來寫介面。盛行中國產化的今天,相信Qt的市場會進一步加大。

    2、MFC

    上個世紀的產物,目前就連親爹微軟也已經將他拋棄了,行業更有MFC==沒飯吃一說。不過其在軍工、電力等一些特有行業還是有一定的市場佔有率。自用的話,建立基於對話方塊模式的下專案,作一些不涉及複雜介面效果的小工具還是很方面的。

    比如下圖是使用MFC拖拽的一個介面圖。

    3、第三方介面庫,比如Duilib、BCG等。

    這裡重點介紹下Duilib,一款Windows下免費開源的DirectUI介面庫,由於簡約易擴充套件的設計以及穩定高效的實現被各大網際網路公司普遍接受,廣泛應用於包括IM、影片客戶端、股票行情軟體、導航軟體、手機輔助軟體、安全軟體等多個行業的眾多pc客戶端軟體。比如大家每天都在用的「微信」、「盤古越獄工具」、「愛奇藝」等等。

    下圖是基於Duilib開發的一款仿360安全衛士的介面效果。

    至於缺點呢,也和突出,早期的版本目前作者已經不再維護了,所以或多或少會有一些坑在等著你,目前各大公司都有其自己維護的版本。

    總結

    在校學生,建議優選Qt,文件齊全,遇到問題也會很容易的在網路上找到解決辦法。MFC這種上個世紀的東西還是讓他永久的封存起來吧,至於Duilib等第三方開源庫,文件實在是太少了,新手不建議選用。

  • 6 # 小小猿愛嘻嘻

    c++哪個圖形介面庫合適?這個目前來說非常多,簡單易用的就是qt,元件眾多、容易上手,支援跨平臺,複雜一些的就是mfc,僅限於windows平臺和老專案,下面我分別簡單介紹一下,感興趣的朋友可以嘗試一下:

    簡單易用qt

    這是一個非常流行的c++桌面應用程式開發框架,相信大多數開發者都聽說或使用過這個框架,應用廣泛、支援跨平臺,有一套非常便捷、易用的ui設計工具,元件眾多、功能強大,只需簡單拖拽、編輯屬性,即可快速構建一個視覺化程式,所見即所得,支援眾多資料庫開發,包括mysql、mssql等,如果你熟悉c++,那麼qt非常容易上手,只需幾天便可輕鬆入門,社群活躍、官方資料眾多,非常值得學習和使用:

    經典複雜mfc

    這是一個非常經典的c++桌面應用程式開發框架,微軟自主設計研發,僅限於windwos平臺,在早期桌面開發中非常流行,一直扮演著重要角色,和qt一樣,mfc也自帶有視覺化設計工具,只需簡單拖拽、編輯屬性,即可快速構建一個GUI桌面程式,省去了大量程式碼編寫和最佳化,但設計思想太過複雜、靈活度不高,正在逐漸走向沒落,只有一些老專案還在使用,初學來說,也不容易掌握,需要一段時間熟悉才行:

    免費開源wxwidgets

    這是一個非常著名的c++桌面應用程式開發框架,免費開源跨平臺,相信許多開發者都聽說或接觸過這個圖形庫,wxpython就是基於wxwidgets開發而來,與qt仿平臺外觀不同,wxwidgets完全使用平臺自己的庫建立圖形介面,不需要再新增額外層程式碼,因此執行速度更快、也更高效,不管私用還是商用,都完全免費,如果你有一定c++基礎,學習起來也會十分迅速,很快就能入門:

    當然,除了以上3個不錯的c++圖形庫,還有許多其他庫也非常不錯,像duilib等,只要你有一定c++基礎,熟悉一下相關示例和程式碼,很快就能掌握的,簡單易用的話,就推薦qt,對於課設來說,完全夠用了,也非常容易學習和上手,網上也有相關教程和資料,介紹的非常詳細,感興趣的話,可以搜一下,希望以上分享的內容能對你有所幫助吧,也歡迎大家評論、留言進行補充。

  • 7 # 山海皆可平z

    推薦用qt,這個是跨平臺c++介面程式設計庫,目前這個庫已經非常成熟,用的人也越來越多,最重要的是一次編寫,多平臺都可以使用,甚至嵌入式平臺也可以用。強烈建議用這個。

  • 中秋節和大豐收的關聯?
  • 現在離婚的越來越多,再婚又不知道如何選擇,二婚有多少幸福的呢?