优点。和缺点?你用了多久?詹比呢?
8 回答
几年来我一直在使用 Qt 进行商业开发,并且对它非常满意。
Qt 的优点之一是它提供了大量的库以及 GUI 东西(例如 XML 解析、线程、网络),所有这些都采用一致的风格和多平台。这意味着我们很少需要使用其他库,尽管我们确实在某些事情上使用了 boost。
对我们来说,另一个非常重要的因素是国际化。在以前的基于 MFC 的应用程序中,我们必须为我们支持的两种语言维护 2 个本地化版本。在我们基于 Qt 的应用程序中,我们只有一个版本。
- Qt 翻译系统,使用 linguist 使用方便,支持多种语言也很容易(当然你还得翻译字符串,这工作量很大!)
- 小部件根据布局调整自身大小的 GUI 布局系统使一切变得更加容易。在不同的语言中,字符串的长度是不同的。对于固定大小的小部件(如 MFC),每个对话框都需要针对每种语言进行调整,否则部分标签会被截断。使用 Qt,他们调整自己的大小。当然,在某些情况下它不能完全正确地工作,但它仍然使一切变得容易得多。
- QString 用 Unicode 做所有事情,并且很容易处理来自不同编解码器的转换。
非常有价值的一件事是对源代码的访问,尽管这肯定不是 Qt 独有的。在某些情况下,检查 Qt 源代码的能力解释了一些奇怪的行为或给出了如何实现某事的线索。
我们在 Qt 中发现了一些错误,其中一些已在向 Trolltech 报告后得到修复。在其他情况下,他们建议解决问题。这些都相当模糊,对我们的发展没有重大影响。
Qt 的主要缺点之一是缺少用于商业应用程序的 3rd 方库。但是,Qt 相当完整,所以对我们来说这不是一个大问题,尽管这取决于您正在开发的应用程序类型。
我也没有用过占碑。
在七年的时间里,我在几个平台上用 C++ 完成的几个项目中使用了 Qt。我认为它工作得很好,而且我在 Mac 上开发一个像样的 GUI 应用程序肯定比通过一种我当时不知道的语言 (Objective-C) 来得更快。
我认为信号/槽机制有点时髦,但并不可怕。一旦你使用它一段时间,它就不是一个展示停止器。连接的东西很容易搞砸(或者至少是这样),检查这些东西的回报总是好的,因为你的应用程序会愉快地运行,而不是告诉你它没有工作。
我从来没有用过jambi。
以下是我使用 Qt 的一些优点和缺点:
优点:
跨平台
我知道这个总是被使用,但是在使用 Qt 在 Windows 和 Linux 之间来回切换之后,令人惊讶的是,我只需要做很少的事情就可以启动和运行。我认为这得益于我只将 Vim 与 Qt Designer 一起使用。
QMake
这是我最喜欢的 Qt 方面之一。在 wxWidgets、FLTK 等工作之后,我厌倦了使用不同的构建系统,我不想手动创建我的 makefile。我目前在 Qt 以外的任何东西上都使用 CMake,但我认为我什至正在慢慢地将 Qt 转移到 CMake。然而,使用 QMake 非常容易。
QTestLib
我查看了其他几个 C++ 单元测试框架,当我使用 QTestLib 创建测试时,感觉它与 NUnit(C#) 非常相似,并且在几分钟内我就有了几个通过测试。我还注意到创建自己的持续集成环境非常容易。
最接近 Java 和 .Net 的生产力
我听到/读到的关于 C++ 的最重要的话是,“我可以使用 Java 或 .Net 提高生产力”。根据个人经验,在 Eclipse 或 Visual Studio 加载之前,我可以使用 Vim 和 Qt Designer 获得在 Qt 中运行的应用程序原型。我还在 Qt 中获得了一组与 .Net 或 Java 中非常相似的库,如果不存在,我可以利用现有的 C++ 代码。
缺点:
价格
这是我现在能想到的最大因素。然而,成本是值得的每一分钱,嗯,如果我知道在不打电话给销售代表的情况下我必须节省多少美分的话。我在他们有小企业折扣的那天买了一个许可证,那是值得的,我会支付三倍的钱,我认为这是目前的价格。
使用商业许可在任何地方开发
我希望能够在任何平台上进行开发,但可以为另一个平台构建和销售。例如,在 Linux 上开发,然后在 Windows 上构建和部署(如果您只有 Windows 商业许可证)。据我所知,您只能在您拥有许可的平台上开发和构建商业应用程序。
供应商锁定
好吧,这更像是个人的骗局。我不喜欢与特定的供应商联系,因为我会被公司方向和产品方向跟踪。奇趣科技被诺基亚收购了,这是好是坏我不知道,但是这么大的公司可以做坏事。
我想我现在已经完成了:)。哦,我没有使用过 Jambi,但我真的很想做几个原型项目,以了解使用 C++ 开发的插件和 Jambi 是多么容易。尤其是使用 Jambi 作为带有 C++ 插件的 Web 界面。
老实说,我没有阅读太多关于它的内容,所以这可能是不可能的或非常容易的。
我在以前的工作中使用过 Qt。在那之前的几年里,我只与 Qt 有过最短暂的接触,所以我几乎是一个 Qt 新手。
当我开始时,我被告知要选择我的语言和环境,但跨平台支持是可取的。我尝试了 Qt 和 Java,甚至尝试了 C#。我给自己两天时间来评估每个选项。
也许我对我作为 C++ 开发人员的历史略有偏见,但在每个选项上花费了时间之后,Qt 是唯一一个在没有长时间学习曲线的情况下显示出有用的提示的唯一一个。
Qt 提供的文档和示例应用程序使经验丰富的开发人员非常容易,但 Qt 初学者可以非常轻松地快速启动和运行。在试用期结束时,我完成了最终应用程序的 UI 原型/模型。在使用 Java/Eclipse、Java/SunStudio 和 C#/VS.net 时,我很难在那个时候遇到任何不平凡的事情。
Signals/slots 需要一些时间来适应,但还不错,我编写了一些简单的包装器来断言连接无法阻止愚蠢的拼写错误停止应用程序。从工作。
我喜欢的另一件事是 Qt 几乎拥有我需要的一切。你可以命名它——存储、网络、GUI、线程、容器——Qt 有一个类来处理它。哪个恕我直言很重要,因为混合库有时会导致问题。
拥有 Qt 的源代码是一大优势,只是出于兴趣,它还允许我使用我选择的编译器和设置来编译 Qt,包括在开发期间使用的调试版本。
我还发现奇趣科技的支持相当不错。我在 Qt 上提出了几个错误,其中一个在我仍在从事该项目(仅 6 个月的工作)时已修复并发布。
我能记得的唯一负面因素是调试 Qt 对象(使用 VS)的困难 - 有一个用于 VS 的 Qt 插件可以检查 Qt 对象,但我使用的是 VS 的免费版本,插件不适用于它。但这不是 Qt 的错。
我没用过jambi,所以不能评论。
在 C++ 上,您唯一的其他选择是 MFC 和 wxWidgets。QT/wxWidgets 很大程度上是个人喜好。我确实认为 QT 是一个干净的设计,具有良好的文档。
如果你不将 QT 用于 GPL,它会花费大约 1 个月的开发人员工资。
我已经使用 Qt 两年多了。
我在 Qt 上喜欢的东西是:
- 简单的 GUI 编程(与 MFC 相比),Qt Designer
- 漂亮的容器类
- 不错的图形场景框架
- 带有有用示例的优秀文档
- 翻译支持
- 良好的技术支持
我强烈推荐Qt Developer Days。如果你有机会参加,那就去做吧!那里有很多精彩而有趣的谈话。
Qt 是一个非常好的库,但它具有昂贵的单机开发许可证,因此它并不总是对所有项目都有用。
但是不要使用它...
优点:QT 有一个可选的 3 阶段布局,而 WX 目前只允许 2 个(我相信他们计划做 3 阶段,只是还没有工作)。
使用布局的最大问题之一是静态文本和换行。WX 询问您的最小宽度/高度和屏幕部分有多大,QT 可以选择说您想要多宽,如果您的 X 宽,您需要多高。这使您可以更好地表达页面的流程。