什么是当今最好的跨平台C ++ UI工具包?

我正在写便携式现代C ++的高性能系统。 很多STL和Boost。 我想开始build立这个系统的一些前端。 通常我会select使用一个非c ++解决scheme的用户界面,但是这意味着一个非常高的性能用户界面,这意味着响应消息的低延迟,大量的信息sorting和显示等我已经写了很多.NET中的实时用户界面,他们很好地完成了这项工作。 不过,我真的希望这是跨平台没有任何技巧(如单声道),并只是工作。 什么是实现这一目标的最佳select?

编辑:

让我把另外一个我刚才记得的,JUCE。 免费用于非商业用途,以及跨平台。 唯一的问题是开发是由一个人控制的,但是源代码是可用的。

JUCE

虽然我不确定你的意思是“技巧”,我只能给你这些链接。 是否“最好”是由您决定的。

  • wxWidgets的。 免费用于商业用途。 旧的,但兼容的APIdevise(没有例外,没有模板,没有RTTI,没有使用STL)。 它使用本地小部件。
  • Qt的。 现代框架。 支持SQL,用于embedded式ECMA脚本。 包括一个embedded式Web浏览器。 小部件是CSS可编辑的,可以放在可变形的canvas上。 惊人的工具包。 速度也很快 不是免费的商业用途,但免费的开源项目。

    • 编辑:截至2009年1月14日,诺基亚宣布将Qt纳入LGPL许可证,使Qt免费提供商业用途。
  • gtkmm的。 C ++绑定到作为GNOME基础的着名的gtk +工具包。 免费为商业(但不能静态链接)。 现代C ++ API。 仅GUI工具包。 像Qt一样,它自己绘制小部件。 这在Windows上看起来有点差(Qt很好地绘制了小部件)。 我没有testing过,所以我不能告诉你的performance。

还有更多。 但是我只知道那些合理的事情来告诉你。

Qt是迄今为止最完整,支持良好的跨平台C ++ GUI框架。

我最近研究了几乎所有上面提到的工具包。 我会说Qt是迄今为止最适合使用的工具包。 我说'可取的',但不是'最好的',因为没有工具箱是完美的,总的来说没有“完美”的解决跨平台问题的方法。

以下是Qt 4.5(Qt 2009.01)的一些优缺点,从2009年1月开始在LGPL下提供

优点:

  1. 支持很多平台,最重要的(我假设)是Windows,Mac OS X和Linux。
  2. 在Windows,Mac OS X和Linux上看起来是原生的(有时真的使用原生的东西)。 它在Windows上非常好。 cocoa在Mac OS X上得到了支持,这是一个大问题。 在Mac OS X上,可以使界面与原生Cocoa应用程序几乎无法区分。
  3. 它带有一个非常好的跨平台构build系统,可以节省大量的时间
  4. 它是一个完整的套件,就像一些应用程序框架,而不仅仅是一个GUI框架。 如数据库和networking。 它甚至会给你一个webkit控件。
  5. 伟大的文件。 您可以在GUI框架上find最好的文档集之一。 它甚至比MSDN和苹果开发引用更好。
  6. 所有其他常见的跨平台的东西

缺点:

  1. 它很大。 设置不是那么琐碎。 学习需要一点时间。 占用大量的磁盘空间。

我相信Ultimate ++(你可以很容易在Google上search基于Ultimate ++的名字)非常好。 它很大程度上利用了C ++模板,但问题是它只能运行在Windows和Linux上,而不是Mac OS。 它有它的IDE和它的IDE是用Ultimate ++自己编写的(鸡和蛋问题)。 使用U ++优于.NET和Mono的优点是,由于不需要安装框架以使应用程序运行,因此所产生的应用程序具有更小的占用空间。

你会发现很多C ++跨平台的GUI库,但是AFAIK Qt是唯一真正的select。

我一直很喜欢wxWidgets。

关于在Windows上安装它的反应,有几个伟大的video在… http://blip.tv/file/1068698和这里http://wxwidgets.info/video

C ++ GUI工具包列表可以在我写的旧博客文章中find。 其中大约一半是跨平台(横跨“三巨头”)。 唉,其中一些已经基本上被放弃了。

不幸的是他们没有一个妥协。 IMO在C ++ GUI库方面没有明显的select。 彻底调查你的特殊要求。

如果你没有特别的GUI需求,任何wxWidgets,Qt,FLTK或者Gtkmm都可能会成功。

我看过的最好看的开源应用之一是Songbird 。 这是一个基于Modzilla的XULRunner框架构build的类似iTunes的媒体播放器。

一般来说我喜欢wxwidgets,但是我主要在Linux上使用它。 我刚刚尝试在Windows XP上安装g ++,并安装了它。

编辑:做更多的细节,我有麻烦得到它build立。

你说你通常不会用C ++写一个UI,但是在这种情况下关心性能。 因此,我是Nt的build议,因为它有其他语言,如PyQt绑定。 你的小部件都将是快速的C + + Qt小部件,你可以用简洁的本地Qt方法来sorting你的消息,并把它们全部放在一起,用一些python / perl /任何东西。

让我们不要忘记XVT它是一个C ++对象库和一个C API。 请参阅www.XVT.com。 它在90年代中期失去了方向,但仍然保持最新和销售。 它尽可能使用本地小部件,而不是仿真。 当它很受欢迎的时候,它被19000多家公司收购,很多商业软件都会销售这些软件,并且对它的实现有很大的深度。

不,我不为他们工作!

托尼