Qt4.5 vs Cocoa用于原生Mac UI

时间:2009-12-24 08:40:38

标签: objective-c cocoa qt4

我已经为Windows和* nix平台开发了很长一段时间,我正在寻求进入Mac开发。我在使用ObjC / Cocoa和C ++ / Qt4.5之间徘徊。

C ++ / moc语义对我来说更有意义,并且在Qt中提高知识似乎是一件明智的事情,因为你最终得到了涵盖更多平台的技能。

我是否可能通过跳过Cocoa来阻碍我的申请?

示例Qt应用程序看起来很像Mac原生,但它们非常简单,因此可能无法讲述整个​​故事。 Qt没有的Xcode方式还有其他优点,例如打包,部署等吗?

10 个答案:

答案 0 :(得分:13)

这是一个简单的方法来回答它:

如果您使用.NET或MFC开发Windows应用程序,是否会使用Qt妨碍您的应用程序?如果答案是肯定的,那么Mac上的情况可能是相同的。

我能想到的一些消极因素:

  • 许可
  • Qt应用虽然不错,但并不完全是原生UI体验,而且本机用户界面设计师可以在Cocoa中做些让人头脑发昏的事情。虽然我无法确定Qt中没有所有相同的功能,但我对此表示怀疑。
  • Qt总是落后一点。如果Microsoft或Apple推出了一项出色的新技术,您必须等待Qt开发人员更新Qt。

然而,尽管如此,只有您可以确定使用Qt的商业价值。如果您认为跨平台开发将成为您开发的主要部分,那么尽管存在上述问题,Qt可能也是值得的。

答案 1 :(得分:5)

问问自己:你知道有多少最好的Mac应用程序使用Qt而不是本机Cocoa?

对于我们的机器人系统,我们最初使用跨平台的wxWidgets库在C ++中编写我们的控制软件(由于某些许可问题,我们避免使用Qt),因为我们认为我们必须针对Windows,Linux和Mac平台我们的最终用户。这是我们发货超过一年,直到我开始修补Cocoa。

马上让我印象最深刻的是你使用Cocoa开发的速度有多快。最终,我们决定放弃对Linux和Windows的支持,并在Cocoa中重写我们的整个控件应用程序。我们花了几年时间用C ++编写的内容只需要三个月就可以完全重新实现Cocoa。

除了其他人指出的“最低共同点”界面问题外,Cocoa所允许的快速发展已经成为我们公司的竞争优势。自从我们转换为Cocoa以来,我们的软件发展得非常快,它使我们成为一家拥有一名开发人员的新公司,甚至可以吸引拥有20人开发团队的10年竞争对手。这似乎是Mac开发领域的一个常见故事,在那里您可以看到许多小团队能够创建与大公司竞争的产品。

最后请注意,使用Cocoa可以让您始终掌握Apple不断推出的新API。我们现在正在研究一种新的控制界面,它将大量使用Core Animation,这对于使用Qt来说是很痛苦的。

答案 2 :(得分:3)

我目前正在使用QT(实际上是PyQT,但它对您的问题没有任何影响)和本机Cocoa应用程序进行开发。对我来说,没关系,我选择了Cocoa。一般来说,探索Cocoa是非常值得的,Cocoa框架中有很多很棒的概念,而Objective-C 2.0也是如此。

答案 3 :(得分:3)

如果您希望将其作为跨平台应用程序,我会使用Qt。

答案 4 :(得分:3)

您可以查看QMacCocoaViewContainer课程。它充当了通用Cocoa视图的某种包装器,所以你也可以拥有Qt没有正式支持的Cocoa元素。

当然这意味着要了解一下Cocoa和Objective C以及Cocoa UI的外观。但如果你已经很好地了解Qt,并且如果你的应用程序不是全部而且只是关于GUI,这可能是一个很好的方法。

不要忘记QMacStyle::WidgetSizePolicy或者你不明白为什么你的桌子如此巨大。

答案 5 :(得分:3)

显然,最好的选择是使用支持本机小部件的跨平台套件。 使用QT4,您可以构建基本用户界面。然后只需为您的特定目标平台添加本机支持。

当然,Cocoa有很多花哨的东西(你仍然可以通过QT4使用它们),但让我明白一下。我在AppStore上看到很多花哨的应用程序,漂亮的应用程序,但大多数只是垃圾,昂贵......无论如何。我真的很想念我的Kate文本编辑器,我的okular查看器,我的krita绘图软件......这些都比商业和昂贵的替代品更好,并且是免费的。所以我只是稍微调整源代码,有一个真正的原生和很棒的经验。

如果我必须在我的主计算机上使用linux应用程序是一个mac os x怎么办?还是窗户?管他呢?仅?

例如,为什么我可以使用功能齐全的真实图像处理软件(如Gimp),为像mymatmator购买昂贵的,花哨但功能较少的图像编辑软件? YES Gimp基于gtk2,这在任何平台上都是一种痛苦,特别是在Mac上,因为它真的很难看。 Gimp应移植到QT4。 Inkscape也应该移植到QT4,它会感觉很棒。

这么简单。天啊! http://doc.qt.nokia.com/4.7-snapshot/demos-macmainwindow.html 即使您可以添加对新的本机狮子全屏功能,统一标题和工具栏菜单等的支持

作为用户,我非常关心高效,精选,优秀和跨平台的应用程序,我并不关心开发人员的便利性或懒惰。

答案 6 :(得分:2)

我做了很多跨平台开发(Mac,Windows,Linux),有些项目使用Qt。它是一个很好的框架,并提供了一个丰富的类库。如果您需要在多个平台上部署,无法在平台特定的前端上花费时间/精力,或者对每个平台的“通用”支持足够好,那么请使用Q​​t。

然而,Qt在某些方面不可避免地会受到最低公分母综合症的影响,有时候感觉不够相当原生。还有一些特性难以支持,或者在Qt库中根本没有提供。因此,如果您能够负担得起时间和精力,或者您的应用确实需要注重细节和适应性。完成,然后开发单独的前端可能是值得的。

在任何一种情况下,您都应该以平台中立和前端中立的方式编写后端(aka域)代码。这样,前端很容易在平台之间进行更换或修改。

你总是可以从Qt前端开始,快速上市,然后开发本土前端。

在实践中,我注意到Windows上的Qt应用程序看起来最“原生”,而在Mac上则有一些微妙的迹象标志使其外观/感觉不太正确。在UI / UX方面,Mac用户往往有更高的期望!

答案 7 :(得分:2)

自发布以来,我一直在学习Cocoa / Objective-C的方式,并且给我留下了深刻的印象。尽管我最初认为它是一种非常古怪的语法,但Objc似乎是一种非常有效的语言来实现UI代码,而XCode糖 - 比如Core Data和绑定 - 可以简化所有无聊的工作。

在进入可可之前,我花了一些时间研究了QT的例子和文档,并且倾向于同意上面所说的内容,因为它略微落后于曲线,而不是'aqua-ish' - 虽然来自一个相当微不足道的检查。如果我绝对必须构建一个跨平台的应用程序,我可能会使用QT而不是试图分离出UI代码,因为它似乎会提供足够近似的视觉效果,但对于mac唯一目的,Cocoa看起来像一个明确的胜利。

感谢所有人的回复,他们都非常乐于助人!

答案 8 :(得分:1)

不要将Qt用于Mac应用。您将无法获得2D渲染的硬件加速,并且您将无法提供ADA合规性。

答案 9 :(得分:0)

根据您要撰写的应用类型,另一个竞争者REALbasic现在称为Xojo

从C ++迁移很容易(我有15年的C ++经验),框架和IDE非常高效。您还可以轻松地部署到Linux和Windows,从而获得额外的好处。他们的框架编译为本机代码并使用本机小部件,因此您没有模拟的外观。

在Objective-C中学习Cocoa和编码的一个重要原因是,如果你想磨练自己的iPhone技能,或者正在追逐一种非常奇特的用户体验。如果你想与WPF开发的最前沿相媲美,那么我推荐Cocoa。

相关问题