2013-10-29 32 views
2

我已經遠離GUI編程很長一段時間,所以請原諒我的無知。爲跨平臺應用程序創建許多本地GUI前端

我想嘗試以下操作:

  • 寫的Mac OSX應用程序,但仍然能夠移植到贏/ Linux操作系統(即C++用的OBJ-C GUI核心)
  • 避免QT /其他OSX上的工具包(即直接與Cocoa對話 - 我覺得我使用的許多Qt應用程序像我的系統其餘部分一樣突出顯示)
  • 並不重要,但如果它意味着避免使用Visual Studio如果他們有助於創建更好的代碼,我可以自由地在Windows上使用更新的C++功能。

我相信這種配置可能會得到我什麼我在尋找:

  • 核心C++靜態庫
  • OSX GUI(可可)
  • Windows圖形用戶界面(?Qt的+ MinGW的)OR (沒有新的C++特性時,Visual Studio + ManagedC++/C#/ ????)
  • Linux的GUI(QT)

一旦agai ñ,對不起我的無知,但這可能嗎?這是否理智?有沒有真實世界的開源示例完成這樣的事情?

+0

如果C#那麼爲什麼不是Java + Swing(極端跨平臺)還是Java FX?或者SWL/JFace(本地控件,需要DLL) –

回答

5

有相當多的OS X應用程序具有完全自定義設計看起來不使用很多股票控制。想起iStat Menus,但還有很多其他例子。它們看起來還不錯,但是通過手動設計它們使其看起來很好,並與OS X應用程序的整體外觀進行「網格化」來完成。即使他們的偏好窗格不使用股票按鈕。

因此,你可以走很遠使用Qt,你只需要支付密切關注你在做什麼 - 同樣的方式與其它開發商支付密切關注即使使用可可時。你會發現Qt的控件提供的功能往往超出了Cocoa提供的功能。

也就是說,在OS X上,有時候您可能需要運行一些預計會出現CFRunLoop的本機代碼。很高興知道Qt的事件循環已經爲你旋轉了一個runloop,所以只要你在給定線程中有一個事件循環,你可以使用基於runloop的代碼 - 默認的runloop由Qt的實現QEventDispatcher(某處在它的膽量)。對於非gui線程,未修改的QThread會爲您做。例如,這對於使用異步IOKit功能非常有用。 Another answer of mine介紹了一些Cocoa鼠標事件抓取代碼。以前使用Carbon的版本可以在該答案的編輯歷史記錄中找到。

同樣適用於Windows:Qt爲它擁有的所有頂級窗口運行消息接收器,並且您可以使用qtwinmigrate集成本地控件/窗口。您也可以使用Active Qt framework集成ActiveX控件。

+0

謝謝,特別是對於未來所有節省時間的信息。現在我想到了它,我注意到一些我最喜歡的GUI不會過分使用本地控件。很高興知道我可以安心使用Qt。 –

3

嗯,我認爲你應該嘗試在OSX上的Qt。 Qt允許應用程序的本地/自定義外觀(您提到的那些情況可能是不好的例子 - 您可能沒有注意到許多其他應用程序也使用Qt)。

工具,我通常使用的多平臺開發:

  • C++(現在的C++ 11日以來所有主要的編譯器或多或少地支持它)
  • Boost
  • 的Qt
  • CMake爲構建系統生成器

如果使用此工具集,您可以選擇任何平臺你喜歡開發,並且仍然是多平臺的,沒有在其他平臺上進行廣泛的工作。

+0

很高興知道。有什麼傑出的例子我應該看看靈感? –