C ++ Qt与Eclipse RCP在跨平台GUI开发方面的优缺点是什么?

时间:2011-04-06 19:29:39

标签: qt user-interface cross-platform eclipse-rcp

我将为现有的C ++应用程序开发一个新的GUI。该应用程序适用于Windows和Linux,与GUI的通信是通过客户端/服务器进行的。

Eclipse RCP和Qt之间的优缺点是什么?

2 个答案:

答案 0 :(得分:24)

Qt的一些优点:

  • C ++的东西通常表现更好;但是,这是有争议的。
  • Qt是Meego的基地,the mobile platform由英特尔,AMD和其他公司赞助;然而,它目前的势头对我来说似乎并不太高。这意味着您还可以为各种移动设备和通常嵌入式设备创建应用程序
  • 那里有很多基于Qt的应用程序。
  • 它有WYSIWYG designer
  • 适用于小型到大型项目,特别是因为QtQuick,它允许立即创建小型应用程序,几乎不了解C ++
  • Qt在Python中有一个叫做PyQt的惊人包装器(当然还有PySide),它允许快速开发和光滑的原型设计。人们经常使用PyQt(或PySide)作为Qt应用程序的UI端。当然,你可以在同一个应用程序中轻松使用Python和Qt,充分利用它们的优势(但也有弱点)。即使对于大型项目,这也允许相对快速和平稳的开发周期

Qt的一些缺点:

Eclipse RCP的一些优点:

  • Eclipse RCP不仅仅是一个图形工具包:

    • 它采用基于插件的架构,可以帮助在不同组件(插件)之间分配功能,并控制这些组件(插件)之间的依赖关系。 Eclipse插件系统依赖于他们自己实现的名为OSGi的Java组件系统规范。
    • 它提供了一种机制来启用称为extension points的解耦应用程序可扩展性。
  • 您可以在应用程序中使用many Eclipse plugins,其中许多都具有对商业产品友好的分发许可证。

  • 它有WYSIWYG designer

Eclipse RCP的一些缺点:

  • Eclipse使用名为SWT的自定义窗口工具包;在每个平台上,它依赖于本机图形层。在Linux上,它依赖于Gtk+(尽管也可以使用Motif),根据我的经验(and other's)存在性能问题,主要是使用高速更新的小部件。实际上,我们中的许多人在Eclipse RCP应用程序中嵌入了Swing元素,以克服性能问题,同时保持Eclipse的可扩展体系结构;但是,这可以带来integration problems。有一个版本的SWT使用Qt作为后端,但它被并入Eclipse的代码库seems stagnated since October 2010

  • Eclipse RCP应用程序的启动时间(理解为启动应用程序后直到显示窗口所经过的时间)可能会很长。

  • 如果您打算通过JNI将C ++内容与Java集成,请注意some people find it difficult

  • Eclipse有很多错误。 Eclipse's bugzilla是RCP开发人员非常有用的资源。

  • 您希望Eclipse RCP应用程序的外观和行为与Eclipse IDE不同,您将遇到的麻烦越多。

  • 在我看来,Eclipse RCP开发有一个很大的学习曲线。

  • 将Eclipse RCP用于小型项目基本上是一种自杀(除非您仅限于创建插件或类似项目)。由于其基础设施的复杂性,资源需求和上述陡峭的学习曲线,它适用于大中型和大型项目。

  • Eclipse RCP不适用于移动开发,因为它是RCP(富客户端平台)。如果你想要移动,这不适合你。

在我看来,他们的发行许可证(QPL的LGPL / GPL /商业版,Eclipse的EPL版)对于大多数用途都足够灵活。然而,我不是律师,所以我可能会误解。

当然,还应考虑其他因素,如开发人员的经验,他们的技术技能,团队规模,具体要求等。

顺便说一句,我在Eclipse RCP方面有很多经验,但只有Qt的理论知识,所以我的陈述可能有偏见/错误。

答案 1 :(得分:10)

现在Qt拥有LGPL许可证,我会在Eclipse RCP上的任何一天选择Qt。

我用它们来创建相当复杂的应用程序。

由于您可以使用eclipse开发c ++,我假设我们主要比较swt / jface和Qt,而不是eclipse开发环境本身。

我注意到有些事情都使用了两者:

1)Qt有更好的文档和样本

除了网上的一些半生不熟的例子,我还能找到一些有用的eclipse文档。

2)Qt拥有更多“专业”用户

有许多专业公司使用Qt作为他们的UI框架。鉴于它有三个平台支持(Windows,Linux,Mac),它非常灵活,并且有很多支持。

3)Qt趋向于更完整和成熟 -

使用Eclipse我注意到很多时候控件和可用的包只是部分完成,并不完全。它们通常是为某人使用而开发的,并且只编码。 Qt的控件几乎总是一个完整的设计。

4)造型。

Qt和Eclipse都使用本地平台库进行渲染,因此您的UI将“看起来”像您运行的平台上的其他UI(即Linux与Windows)。但是,Qt还提供了相当复杂的样式功能,允许您轻松改变任何控件的外观,并使您可以更好地控制应用程序的外观。

使用新的声明性语言(Qt 4.7。*),您正在接近WPF控制级别,这真是太棒了。

5)UI Designer:

Qt拥有更丰富的Designer,允许您布局表单,并且无需编译任何代码即可进行基本测试。设计器还使您能够在表单上的控件之间添加交互。防爆。单击此按钮 - 禁用此选项

Eclipse也有一个表单设计器,尽管我对它的体验有限。我确实尝试使用它几次,但成功非常有限。最后,我通过代码手动编写了每个表单。这很痛苦。

6)与现有源代码接口

如果你没有这个问题,那么你很幸运。因为Qt是基于c ++的,所以它可以与传统的C和C ++代码无缝集成。集成Java和C并不容易。

7)绘图库

我尝试使用swt库编写一些手绘形状,并被迫绕过swt绘图库的大部分,因为那里有污泥。使用Qt做类似的事情完全没有问题。

8)树和列表模型

Eclipse确实提供了一些开箱即用的功能,可以将传播的数据传输到树,列表和事物中。它在Qt中差不多好,虽然设置起来有点棘手。

9)应用程序布局

Eclipse提供了一些很好的功能来管理'视图(停靠面板)和'透视图'(工作流),如果你决定使用它们会让生活变得美好而轻松。 Qt要求你自己这样做。 Qt确实有停靠面板功能,但在构建丰富的应用程序时,您必须自己设置它。

额外注意:

Qt还提供了一些额外的库来支持像xml这样的东西......所以这有助于缩小c ++和java之间的差距。