我们是否使用Qt?为什么要使用它?
优点和缺点?我们使用多长时间?那詹比呢?
解决方案
在过去的七年中,我在几个平台上用c ++进行的几个项目中都使用了Qt。我认为它运行良好,并且绝对可以使我在Mac上开发一款不错的GUI应用程序比通过当时不了解的语言(Objective-C)更快。
我认为信号/插槽机制有点时髦,但并不可怕。一旦使用了一段时间,它就不会成为表演的障碍。连接的东西很容易捆绑在一起(或者至少是捆绑在一起的),检查这些连接的返回值总是很好,因为应用程序会顺其自然地运行,而不是告诉我们它没有工作。
我从没用过詹比。
Qt是一个非常不错的库,但是它拥有昂贵的每席开发人员许可证,因此并非总是对所有项目有用。
在C ++上,我们唯一的其他选择是MFC和wxWidgets。
QT / wxWidgets在很大程度上是个人喜好。我确实认为QT是具有良好文档的简洁设计。
如果我们不将QT用于GPL,则QT会花费大约一个月的开发人员薪水。
我已经使用Qt几年了,用于商业开发,对此我感到非常满意。
Qt的优点之一是,它提供了大量的库以及GUI内容(例如XML解析,线程,网络),所有库都具有一致的样式和所有的多平台。这意味着我们很少需要使用其他库,尽管我们在某些方面确实使用了boost。
对我们来说,另一个非常重要的因素是国际化。在以前的基于MFC的应用程序中,对于我们支持的两种语言,我们必须维护2个本地化版本。在我们基于Qt的应用程序中,我们只有一个版本。
- 使用语言学家的Qt翻译系统易于使用,并且支持多种语言也很容易(当然,我们仍然需要翻译字符串,这是很多工作!)
- GUI布局系统,使小部件根据布局自行调整大小,从而使一切变得更加容易。在不同的语言中,字符串的长度是不同的。使用固定大小的小部件(如MFC),需要针对每种语言调整每个对话框,否则部分标签会被截断。借助Qt,他们可以自行调整大小。当然,在某些情况下,虽然它不能完全正确地工作,但仍然使一切变得容易得多。
- QString使用Unicode进行所有操作,并非常容易地处理来自不同编解码器的转换。
十分有价值的一件事是对源的访问,尽管e当然不是Qt独有的。在某些情况下,检查Qt源的能力解释了一些奇怪的行为,或者提供了如何实现某些目标的线索。
我们发现了Qt中的一些错误,其中一些已在向Trolltech报告后修复。在其他情况下,他们建议了解决方法。这些都相当模糊,对我们的发展没有重大影响。
Qt的主要缺点之一是缺少用于商业应用的第三方库。但是,Qt相当完整,因此对我们来说这不是一个大问题,尽管这取决于我们开发的应用程序类型。
我也没有用过詹比。
我已经使用Qt两年多了。
我在Qt上喜欢的东西是:
- 轻松的GUI编程(与MFC相比),Qt Designer
- 不错的容器类
- 漂亮的图形场景框架
- 优秀的文档和有用的示例
- 翻译支持
- 良好的技术支持
我强烈推荐Qt开发人员日。如果我们有参加的机会,那就去做吧!那里有很多精彩而有趣的演讲。
我在上一份工作中使用过Qt。在此之前的几年中,我与Qt的接触绝对是最简短的,所以我几乎是Qt的新手。
当我刚开始时,我被告知要选择我的语言和环境,但是跨平台支持是可取的。我尝试了Qt和Java,甚至还给Ca买了它。我给自己两天时间来评估每个选项。
也许我对C ++开发人员的历史略有偏见,但是在花了很多时间选择每个选项之后,Qt才是唯一在没有长时间学习的情况下就有用的任何暗示。
Qt附带的文档和示例应用程序使经验丰富的开发人员非常容易,但是Qt初学者可以非常快速地启动并运行。在试用期结束之前,我已经完成了最终应用程序的UI原型/样机。使用Java / Eclipse,Java / SunStudio和C#/ VS.net,我很难在那段时间内发生任何琐碎的事情。
信号/插槽已经习惯了一些,但还算不错,我写了一些简单的包装程序来断言当连接未能阻止愚蠢的错字停止应用程序时。从工作。
我喜欢的另一件事是Qt几乎满足了我的所有需求。我们将其命名为存储,网络,GUI,线程,容器Qt有一个处理它的类。哪个IMHO很重要,因为混合库有时会引起问题。
拥有Qt的源代码是一个很大的优势,这只是出于简单的考虑,还使我能够使用自己选择的编译器和设置来编译Qt,包括在开发期间使用的调试版本。
我还发现Trolltech的支持相当不错。我在Qt上提出了几个错误,其中一个是在我仍在从事该项目时(仅6个月的工作)便已修复并发布。
我唯一记得的缺点是调试Qt对象的困难(使用VS),有一个VS的Qt插件可以检查Qt对象,但是我使用的是VS的免费版本,插件对此不起作用。但这不是Qt的错。
我没有用过詹姆,所以不能发表评论。
以下是我对Qt的一些优缺点:
优点:
跨平台
我知道这个总是被使用的,但是在Windows和Linux之间使用Qt来回切换之后,令人惊讶的是我几乎不需要做任何事情就可以启动并运行它。我认为这是因为我只将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 ++代码。
缺点:
价格
这是我现在能想到的最大因素。但是,如果我不致电销售代表就必须节省多少钱,那么成本就等于每一分钱。我在有小企业折扣的那一天买了一个许可证,那是值得的,那时我付了三倍的钱,我认为这是当前的价格。
凭商业许可证在任何地方开发
我很希望能够在任何平台上进行开发,但可以为另一个平台进行构建和销售。例如,如果我们仅拥有Windows商业许可证,则在Linux上进行开发,然后在Windows上进行构建和部署。据我所知,我们只能在获得许可的平台上开发和构建商业应用程序。
供应商锁定
好吧,这更多是个人利益。我不喜欢被某个特定的供应商所束缚,因为我被公司方向和产品方向所跟踪。 TrollTech被诺基亚收购了,我不知道这是好是坏,但是一家规模如此之大的公司可以做恶事。
我想我已经完成了:)。哦,我还没有使用过Jambi,但我确实对做几个原型项目感兴趣,以了解使用Jambi用C ++开发的插件有多么容易。尤其是将Jambi用作带有C ++插件的Web界面。
老实说,我对此并没有读太多,所以它可能是不可能的,也可能是很容易的。
但是,不要使用它。
优点:
QT具有可选的3相布局,其中WX当前仅允许2相(我相信他们计划进行3相,只是尚未使用)。
使用布局的最大问题之一是静态文本和换行。 WX询问最小宽度/高度是多少,然后将其分割出屏幕,QT可以选择说我们想要的宽度,如果X宽度为我们需要的高度。这使我们可以更好地表达页面的流程。