2011-03-05 150 views
2

因此,我學習了C++(基礎知識),並且我想編寫軟件,但是我偶然發現了一個問題,我不知道從哪裏開始。看來學習C++是迄今爲止最簡單的部分,它涉及到了解GUI構建的庫,這個概念我還沒有完全理解。我搜索了很多,甚至無法決定是MFC,Win32還是Qt上的新人。GUI C++編程入門的最佳方式是什麼?

Qt C++ GUI看起來像一個有趣且易於使用的軟件,可快速定義類的定義。

在Visual的MFC中,我在預製項目文件和許多關於類的描述中看到了很多代碼,但是由於必須上網,獲取定義有點慢。

Win32顯然是用C語言編寫的,而且不會更新太多?

很多人還推薦Java和C#,但是我沒有興趣學習一門新的語言,因爲我沒有C++的基礎,並且還沒有足夠的實踐。

不知道如何去做這件事。

+2

我仍然建議C#和WinForms。從C++適應C#是微不足道的。建議C#和WinForms的原因是因爲它允許您在使用C#連接邏輯的同時,通過GUI的可視化拖放編輯器生成樣板代碼。 – 2011-03-05 04:26:03

+1

@Sion Sheevok:但是C#和WinForms是一個限制(比Win32多)。 – Frunsi 2011-03-05 05:01:20

+1

@Sion Sheevok:或者C#和WPF! – Sapph 2011-03-05 05:16:30

回答

9

如果您設想將程序移植到除Windows以外的平臺和/或您的實際UI需求相對簡單,請使用Qt。但是Qt「很有趣」,將你從Windows API中抽象出來,所以如果你發現自己需要訪問Qt提供的那些API的功能,那麼你就會陷入困境。因此,如果您留在Windows上,並且您正在構建一個應用程序,其複雜性或特定於Windows的功能可能需要更直接訪問Windows API,請使用MFC。 MFC通過該API提供了一個簡單的抽象層;其概念或多或少與API的概念一一對應。

+0

您可以alyaws訪問Qt中的Win32 API。 – anno 2011-03-05 05:35:22

4

你想要什麼樣的GUI?任何框架應該能夠做任何類型的GUI的,但也有一些對某些工作優化:

  • MFC是用於製作應用程序,編輯文件,如MS Office程序的Word,Excel和PowerPoint優化。
  • wxWidgets和Qt(以及.NET WinForms和WPF)針對主要使用小部件(文本框,按鈕,菜單)的任何類型的應用程序進行了優化。
  • 如果要繪製圖形或矢量圖形等東西,SDL將進行優化。

我不建議你使用MFC,因爲它是不適合於大多數應用程序,也沒有使用現代C++的設計,它的滿載需要的東西的解決方法是在早期版本中打破的Visual C++,現在由於向後兼容性而無法動搖這些變通辦法。

無論您想要創建什麼類型的應用程序,Win32 API實際上都非常有用,因爲它定義了UI如何與系統其餘部分接口的規則。是的,它是用C編寫的,但這是爲了使它可以從任何編程語言中使用,而不是因爲它是一個過時的設計。 Win32 API高度面向對象,廣泛使用多態。

0

MFC已過時。如果堅持在Windows上使用C++,我建議您使用C++ CLI。 但是我建議你直接學習c#,因爲c#是.Net世界的主流語言。 對於GUI,Windows世界現在由WPF占主導地位。

如果有一天,你想賣使用Qt,您可能需要購買許可證編寫的程序:

+4

「..由WPF主導」:哪些應用程序使用WPF - 除了那些來自Microsoft的? – Frunsi 2011-03-05 05:37:35

+1

只有Microsoft使用WPF?舉一個簡單的例子,Yahoo Messenger使用WPF,還有其他的。 – user496949 2011-03-05 06:53:50

2

一些事情你需要知道的。

如果您覺得GUI應用程序/ GUI編程是您一般想要做的事情,那麼對於Windows平臺,您最好學習WinForms或更好的WPF(當然包括C#)。

如果您只是想爲您的C++程序快速搭建簡單的GUI以用於學習目的,並且您並不關心學習框架和授權問題,那麼只需使用Qt或wxWidgets即可。

+0

爲什麼downvote? – Sapph 2011-03-05 05:14:02

+1

Qt現在是LGPL。 – anno 2011-03-05 05:24:00

+0

@anno我知道這一點。這就是爲什麼它沒有說「你將不得不購買」,而是「你很可能需要購買」。因爲它看起來像我傷害了一些Qt粉絲的感覺,我會編輯它爲「你可能需要......」 – m0s 2011-03-05 05:33:42

相關問題