2013-10-29 29 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

很高兴知道。有什么杰出的例子我应该看看灵感? –