Qt还是Delphi...如果你必须选择其中之一?

14
如果你必须选择进入Delphi领域或Qt领域,你会选择哪个?我知道它们并不完全可比。我个人有使用Builder C++ (几乎相当于Delphi)和MFC (几乎相当于Qt)进行Windows开发的经验,还多花了一些时间使用Builder C++。请在分析时排除Qt的跨平台能力。
我希望得到那些使用过两者并且能够比较框架、环境等方面的人的回复。
感谢您提前的回复。

希望得到那些同时使用过两者的人的回复,了解他们如何比较这个框架或环境? - geo
你为什么要将一个IDE和UI框架进行比较呢? - FlySwat
我认为你需要编辑你的问题,让它更加清晰明了。现在你的表述非常主观。添加一些标准来评判每个选项的适用性。 - Jim McKeeth
这是主观的。我看不出可以澄清的可能性。谢谢你添加这个标签。 - geo
4
“MFC几乎等同于Qt”???我很惊讶你还没有因此受到抨击。 :-) - Uli Gerhardt
10个回答

25

如果你在讨论UI框架,那么应该将Qt与VCL进行比较,而不是IDE(在这种情况下是Delphi)。我知道我很严格,但Delphi是IDE,Object-Pascal是语言,VCL是图形框架。

话虽如此,我认为没有任何东西能够与VCL的强大和简洁相媲美。Qt很棒,但它不是VCL。


18

编辑:此答案是在 2008 年撰写的。现在可能不太适用,但也不是完全没有用处。仅供参考。

我曾使用过这两种工具,最终选择了Qt。原因如下:

  • Trolltech公司通过电子邮件提供快速和一对一的支持
  • Qt进行创新,并定期推出强大的新功能
  • Qt的文档非常棒。在极少数情况下,如果文档不够清晰,你可以阅读源代码
  • 拥有Qt的源代码还可以让你在基本库内进行调试,这在许多情况下都是救命稻草
  • Qt的API非常一致和设计良好。我们曾经将新人放到项目中,一个月后他们就对工具包有深入的了解,并且可以很快学习新的类
  • 它有与其他语言的绑定,例如Ruby和Python

C++ 有一些缺点,例如编译时间、打包和不够集成化的IDE。然而,Qt确实让C++感觉更像高级语言。例如,QString消除了所有字符串处理的痛苦。因此,在我的经验中,使用Qt时通常不会遇到C++中更多的错误代码等附加问题。

此外,Delphi的库比Qt的库更多,但由于您可以在Qt项目中使用C或C++库,并且因为Qt功能非常齐全,所以通常您不必寻找其他软件。

对于新项目,我会选择Qt而不是Delphi,这种情况十分罕见。


4
大多数 Delphi 的 SKU 附带 VCL 源代码。 - Uli Gerhardt
只是一点小建议,如果你还没有使用过预编译头文件功能的话,可以在C++中尝试一下。因为你提到了C++的编译时间较长,这似乎表明你还没有使用过预编译头文件,而它可以使得编译速度几乎与Delphi相当(在大多数情况下)。 - Cray
我使用了预编译头文件,这确实有所帮助。然而,链接仍然很慢,PCHs并没有起到帮助作用,头文件依赖性意味着你经常需要重新编译比你想要的更多的内容。 - mxcl

11
我会选择Delphi。当然,你问任何一个Pascal迷,他肯定会给出同样的答案。 ;)
Qt也不错,但VCL感觉更加精细。但这可能是因为我多年的使用经验,所以它感觉正确。我的Qt经验仅限于一个短暂的项目,后来确定由于GoGlobal的强大功能,跨平台实际上并不需要,它可以使任何Win32应用程序成为Web应用程序,从而在任何平台上运行。

2
再次为“pascalholic”加一分 :) - W.K.S

6
这真的取决于你的需求和经验。我曾经使用过两种语言(尽管必须说,我最后一次使用的Delphi版本是Delphi 6,目前正在使用Qt 4.4)。
C++的优点:
- C++更加“标准”,例如你会找到更多的代码、库、示例等等,并且你可以自由地使用STL和boost,而Object Pascal则更像是一种异国语言。 - Qt可以在不同的平台和编译器上编译(Kylix就是基于Qt的)。
Object Pascal的优点:
- 一些动态属性已经内置在语言中,不需要像MOC那样的丑陋的解决方法。 - 编译器针对该语言进行了高度优化,确实非常快速。 - 该语言比C++更简单,因此出错的可能性较小。
Qt的优点:
- 严格来说,除了Designer之外,Qt没有IDE,但它可以很好地集成到您喜欢的IDE中(至少Visual Studio和Eclipse)。 - 设计师在布局方面做得比Delphi表单(注:这是基于Delphi 6的经验,可能不适用于当前版本)更好。
Delphi的优点:
- IDE现在真的很 polished,使用起来很容易,我认为它明显胜过Visual Studio(我没有使用Eclipse的经验)。 - 没有第二点……但是如果我必须分配“集成”这个词,我会把它分配给Delphi IDE。
关于框架的比较,我会留给其他人,因为我不太了解最新的VCL。我的一些评论如下:
- 两个框架都涵盖了大部分所需功能。 - 两者都提供了源代码,这是我必须要求的。 - 两者都有一个或多个相对一致的结构——我更喜欢Qt,但这取决于你的偏好(注:我永远不会说Qt几乎等同于MFC——我曾经使用过MFC很长时间,Qt、Delphi和.NET都更好)。 - VCL具有更多面向数据库的功能,特别是与可视化组件的连接。 - Qt具有更多面向绘图(2D / 3D / OpenGL)的功能。
在我看来,支持非常好和许可证方面的原因也支持Qt,但这取决于您的需求。两个框架都有庞大的社区。

2
Qt现在有一个非常不错的集成开发环境,叫做Qt Creator。 - Skilldrick

5

Delphi和Qt之间的一个重要区别是Qt信号/槽系统,它使得在对象之间创建N对N关系并避免紧密耦合变得非常容易。

我认为在Delphi中没有这样的功能(至少在我使用Delphi的时候没有)。


它不是内置的,但有例如http://www.deltics.co.nz/blog/?tag=multicast-events和http://blogs.embarcadero.com/abauer/2008/08/15/38865。 - Uli Gerhardt

4

我刚开始尝试使用Qt/C++/Qt Creator,必须承认我很惊讶这个“可爱的小混蛋”在我面前已经存在了这么多年,而我直到现在才注意到它。

它(框架)看起来整洁、功能齐全(甚至有一些.NET缺少的功能,如内置XQuery支持)。

似乎大多数使用Qt编写的应用程序都涉及2D/3D/游戏。

我相信缺点只有:需要了解C++和缺乏DevExpress好东西,比如QuantumGrid。

我正在认真考虑将我的一个简单应用程序(像ThumbsView的图片查看器)移植过来。

并且它确实从同一代码库运行。真的!

忘记Kylix、Mono、Lazarus、Free Pascal吧。这个Qt东西比它们都强10倍。

Qt Creator离IDE还有很远的路要走。但我希望未来他们会添加更强大的调试器、代码洞察力和重构(至少是“重命名”)以及更有意义的编译器错误。

我真诚地建议那些没有Pascal/C++经验的人去学习Qt。


2

我会选择Delphi,但这可能是因为我之前已经编程过。似乎还有很多公司在使用它,而且几乎每个有8年以上经验的人都在某个地方遇到过它。大多数程序员似乎都能理解使用它或者至少学习Pascal的感觉。更不用说新的语言(如C#)部分基于它。


2
如果你关注本地Win32速度、一流的RAD环境和可执行文件大小,那么选择Delphi。如果你需要一个真正跨平台的框架,再加上现在灵活的许可政策,而且不介意略微臃肿的代码,则选择QT。
我将一个旧的Delphi程序移植到了QT/C++下,我必须说QT是最接近VCL的框架,无论是在易用性还是功能强大方面。(个人看法)

1

我会选择Delphi。只是因为我有更多的经验。我认为没有其他合理的标准。


1

Qt是跨平台的,Delphi如果我们计算Kylix的话就不太行了。Lazarus是跨平台的,但功能还不完整。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接