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

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

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

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

最佳答案

Qt的一些优点:


通常,C ++的性能会更好。但是,这是有争议的。
Qt是Meego的基础,由英特尔,AMD等赞助。但是,对于我来说,目前的势头似乎并不高。这意味着您还可以为各种移动设备和一般嵌入式设备创建应用程序
有很多基于Qt的应用程序。
它有一个the mobile platform
特别适用于小型或大型项目,特别是因为QtQuick,它允许立即创建小型应用程序,并且几乎不了解C ++
Qt在Python中有一个惊人的包装器,称为PyQt(当然也有PySide),它允许快速开发和精巧的原型制作。因此,人们经常在Qt应用程序的UI端使用PyQt(或PySide)。当然,您可以利用Python和Qt的所有优点(但也可以是缺点)在同一应用程序中轻松组合。即使对于大型项目,这也可以实现相对快速和平稳的开发周期


Qt的一些缺点:


基于Qt的应用程序的代码使用了一些不属于C ++的元素,这些元素必须在进行实际编译之前由称为WYSIWYG designer(元对象编译器)的特殊预处理程序转换为C ++。您和您的构建系统必须考虑到这一点。
诺基亚(Qt的前所有者,因为它moc)具有acquired Trollech。但是,这样做sold it to Digia


Eclipse RCP的一些优点:


Eclipse RCP远不只是图形工具箱:


它采用了基于插件的体系结构,可以帮助在不同组件(插件)之间分配功能,并控制这些组件(插件)之间的依赖性。 Eclipse插件系统依赖于自己的Java组件系统规范,称为not imply their involvement in the development of the open source Qt has changed的实现。
它提供了一种启用去耦的应用程序扩展性的机制,称为OSGi

您可以在应用程序中使用extension points,其中许多具有对商业产品友好的发行许可证。
它有一个many Eclipse plugins


Eclipse RCP的一些缺点:


Eclipse使用了一个称为WYSIWYG designer的定制窗口工具箱。在每个平台上,它都依赖于本机图形层。在Linux上,它依赖于SWT(尽管也可以使用Motif),据我的经验(Gtk+),它存在性能问题,大部分是通过高速更新的小部件实现的。实际上,我们许多人将Swing元素嵌入Eclipse RCP应用程序中,以克服性能问题,同时保持Eclipse的可扩展体系结构。但是,这可以带来and other's。有一个使用Qt作为后端的SWT版本,但是将其合并到Eclipse的代码库integration problems中。
Eclipse RCP应用程序的启动时间(可以理解为从应用程序启动到显示一个窗口所经过的时间)可能非常长。
如果打算通过seems stagnated since October 2010将C ++东西与Java集成,请注意JNI
Eclipse有很多错误。 some people find it difficult对于RCP开发人员来说是非常有用的资源。
您越希望Eclipse RCP应用程序的外观和行为与Eclipse IDE有所不同,您将遇到的麻烦就越多。
我认为,Eclipse RCP开发具有很大的学习难度。
在小型项目中使用Eclipse RCP基本上是一种自杀(除非您将自己限制为仅创建一个插件或类似的插件)。由于其基础结构的复杂性,资源要求和上述陡峭的学习曲线,它适用于大中型和大型项目。
Eclipse RCP不适合移动开发,因为...它是RCP(Rich Client Platform)。如果您想移动,这不适合您。


我认为,它们的两个发行许可证(对于Qt都是LGPL / GPL / commercial,对于Eclipse是EPL)对于大多数用途都足够灵活。但是,我不是律师,所以我可能会对此感到误解。

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

顺便说一句,我在Eclipse RCP方面有丰富的经验,但只有有关Qt的理论知识,因此我的陈述可能有偏见/错误。

关于qt - C++ Qt与Eclipse RCP在跨平台GUI开发中的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5571913/

相关文章:

c++ - 如何从 QListView 中搜索和选择项目?

c++ - Qt中的内存管理?

android - Android StackView 是什么样子的?

objective-c - NSButton setEnabled 不起作用

python - 需要帮助运行 tkinter 程序

eclipse - 带有 RCP SDK 的 "including all environments"是否完全取代了向目标平台添加 Delta Pack?

c++ - 限制 qpainter 在像素图上的绘制

qt - 禁用 QComboBox 中的特定项目

user-interface - 是否有一种语言和平台不可知的声明式 GUI 语言不是 XML?

c# - 如何使用 entityframework 6 with mono 和 sqlite 进行 C# 跨平台开发?