【问题标题】:Do you use Qt and why do you use it? [closed]你使用 Qt,你为什么使用它? [关闭]
【发布时间】:2010-09-12 11:42:49
【问题描述】:

优点。和缺点?你用了多久?詹比呢?

【问题讨论】:

    标签: c++ qt qt-jambi


    【解决方案1】:

    几年来我一直在使用 Qt 进行商业开发,并且对它非常满意。

    Qt 的一个优点是它提供了大量的库以及 GUI 内容(例如 XML 解析、线程、网络),所有这些都采用一致的风格和多平台。这意味着我们很少需要使用其他库,尽管我们确实在某些事情上使用了 boost。

    对我们来说,另一个非常重要的因素是国际化。在以前的基于 MFC 的应用程序中,我们必须为我们支持的两种语言维护 2 个本地化版本。在我们基于 Qt 的应用程序中,我们只有一个版本。

    • Qt 翻译系统,使用 linguist 使用方便,支持多种语言也很容易(当然你还是要翻译字符串,工作量很大!)
    • GUI 布局系统让小部件根据布局自行调整大小,这让一切变得更加容易。在不同的语言中,字符串的长度是不同的。对于固定大小的小部件(如 MFC),每个对话框都需要针对每种语言进行调整,否则部分标签会被截断。使用 Qt,他们可以调整自己的大小。当然,在某些情况下它不能完全正确地工作,但它仍然使一切变得容易得多。
    • QString 以 Unicode 格式完成所有操作,并非常轻松地处理来自不同编解码器的转换。

    非常有价值的一件事是对源代码的访问,尽管这肯定不是 Qt 独有的。在某些情况下,检查 Qt 源代码的能力解释了一些奇怪的行为或给出了如何实现某事的线索。

    我们在 Qt 中发现了一些错误,其中一些已在向 Trolltech 报告后得到修复。在其他情况下,他们建议解决方法。这些都相当模糊,对我们的发展没有重大影响。

    Qt 的主要缺点之一是缺少用于商业应用程序的第三方库。但是,Qt 相当完整,所以对我们来说这不是一个大问题,尽管这取决于您正在开发的应用程序类型。

    我也没用过占碑。

    【讨论】:

    • 嗨,大卫,您指的是什么第 3 方库?你能举个例子吗?
    • 我一个月前开始使用 Qt,使用新的 Qt Quick。迄今为止最大的抱怨是,如果你犯了错误,它不会抛出异常或报告错误,只是没有做你想做的事,没有提示你做错了什么。还有很多其他严重的问题。
    • 也许这应该是一个不同的问题,或者也许这个问题太宽泛而无法讨论甚至偏离网站的主题,但不是软件翻译有时不仅仅是字符串翻译吗?有时可能需要为用户更改工作流程。 IE。有时我发现 Windows 提供的某些消息没有正确翻译成俄语......哦,这个软件已经翻译成俄语,但这是一个笑话而不是翻译......我不确定,因为我没有翻译软件的经验,但我想看看。
    • 目前Qt 确实允许LGPL(这意味着我们甚至可以免费将其用于商业应用,只要我们将更改发布到Qt 本身)
    【解决方案2】:

    在七年的时间里,我在几个平台上用 c++ 完成的几个项目中使用了 Qt。我认为它工作得很好,而且我在 Mac 上开发一个像样的 GUI 应用程序肯定比我当时不知道的语言(Objective-C)更快。

    我认为信号/槽机制有点时髦,但并不可怕。一旦你使用它一段时间,它就不是一个展示停止器。连接的东西很容易搞砸(或者至少是搞砸了),检查这些东西的回报总是很好的,因为你的应用会愉快地运行,而不是告诉你它没有工作。

    我从没用过jambi。

    【讨论】:

      【解决方案3】:

      以下是我使用 Qt 的一些优点和缺点:

      优点:
      跨平台
      我知道一直在使用这个,但是在使用 Qt 在 Windows 和 Linux 之间来回切换之后,令人惊讶的是,我只需要做很少的事情就可以启动和运行。我认为这是因为我只将 Vim 与 Qt Designer 一起使用。

      QMake
      这是我最喜欢的 Qt 方面之一。在 wxWidgets、FLTK 等工作之后,我厌倦了使用不同的构建系统,我不想手动创建我的 makefile。我目前在 Qt 以外的任何东西上都使用 CMake,但我认为我什至正在慢慢地将 Qt 转移到 CMake。但是,使用 QMake 非常容易。

      QTestLib
      我查看了其他几个 C++ 单元测试框架,当我使用 QTestLib 创建测试时,感觉它与 NUnit(C#) 非常相似,并且在几分钟内我就有了几个通过测试。我还注意到创建自己的continuous integration 环境非常容易。

      在生产力方面最接近 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 界面。

      老实说,我没有阅读太多关于它的内容,所以这可能是不可能的或非常容易的。

      【讨论】:

      • 什么费用?现在是 LGPL,GPL 从第一天就已经存在!
      • 最初在 Windows 上是 > 2500GBP/开发者,然后在 Linux 上是 GPL(如果你在做商业应用,帮助不大)然后大约一年前变成了 LGPL。
      【解决方案4】:

      我在以前的工作中使用过 Qt。在那之前的几年里,我只与 Qt 有过最短暂的接触,所以我几乎是一个 Qt 新手。

      当我开始时,我被告知要选择我的语言和环境,但跨平台支持是可取的。我尝试了 Qt 和 Java,甚至尝试了 C#。我给自己两天时间来评估每个选项。

      也许我对我作为 C++ 开发人员的历史略有偏见,但在每个选项上花费了时间之后,Qt 是唯一一个在没有长时间学习曲线的情况下显示出有用的提示的唯一一个。

      Qt 提供的文档和示例应用程序使有经验的开发人员非常容易,但 Qt 初学者可以非常轻松地快速启动和运行。在试用期结束时,我完成了最终应用程序的 UI 原型/模型。在使用 Java/Eclipse、Java/SunStudio 和 C#/VS.net 时,我很难在那个时候遇到任何不平凡的事情。

      信号/槽需要一些时间来适应,但还不错,我编写了一些简单的包装器来断言连接无法阻止愚蠢的拼写错误停止应用程序。从工作中。

      我喜欢的另一件事是 Qt 几乎拥有我需要的一切。你可以命名它——存储、网络、GUI、线程、容器——Qt 有一个类来处理它。哪个恕我直言很重要,因为混合库有时会导致问题。

      拥有 Qt 的源代码是一大优势,只是出于兴趣,它还允许我使用我选择的编译器和设置来编译 Qt,包括在开发期间使用的调试版本。

      我还发现奇趣科技的支持相当不错。我在 Qt 上提出了几个错误,其中一个在我仍在从事该项目(仅 6 个月的工作)时已修复并发布。

      我能回忆起的唯一负面因素是调试 Qt 对象(使用 VS)的困难 - 有一个用于 VS 的 Qt 插件可以检查 Qt 对象,但我使用的是 VS 的免费版本,插件不适用于它.但这不是 Qt 的错。

      我没用过jambi,所以无法评论。

      【讨论】:

        【解决方案5】:

        在 C++ 上,您唯一的其他选择是 MFC 和 wxWidgets。 QT/wxWidgets 很大程度上是个人喜好。我确实认为 QT 是一个干净的设计,具有良好的文档。
        如果你不将 QT 用于 GPL,它会花费大约 1 个月的开发人员工资。

        【讨论】:

        • 当然除了MFC和wxWidgets还有其他选择!例如,有 WTL!
        • WTL 是相当废弃的软件,而且离 MFC 太近了,不太舒服——我不确定我会不会选择它来做一个小实用程序以外的任何东西
        • 还有许多其他工具包。 Fltk,特别是 Gtk 具有 C++ 绑定,但任何具有 C 绑定的 gui 工具包都是可用的。
        【解决方案6】:

        我已经使用 Qt 两年多了。

        我喜欢 Qt 的地方是:

        • 易于 GUI 编程(相比 MFC)、Qt 设计器
        • 不错的容器类
        • 不错的图形场景框架
        • 带有有用示例的优秀文档
        • 翻译支持
        • 良好的技术支持

        我强烈推荐Qt Developer Days。如果你有机会参加,那就去做吧!那里有很多精彩而有趣的演讲。

        【讨论】:

          【解决方案7】:

          Qt 是一个非常好的库,但它拥有昂贵的单机开发许可证,因此它并不总是对所有项目都有用。

          【讨论】:

          • Qt 不是库,而是框架。
          【解决方案8】:

          但是不要使用它...

          专业版: QT 有一个可选的 3 阶段布局,而 WX 目前只允许 2 阶段(我相信他们计划做 3 阶段,只是还没有工作)。

          使用布局的一个更大问题是静态文本和换行。 WX 询问您的最小宽度/高度和屏幕部分有多大,QT 可以选择说您想要多宽,如果您的 X 宽,您需要多高。这使您可以更好地表达页面的流程。

          【讨论】:

            猜你喜欢
            • 2011-04-15
            • 2011-05-22
            • 1970-01-01
            • 2010-09-26
            • 2010-11-25
            • 2023-03-15
            • 2011-01-05
            • 1970-01-01
            • 2010-09-06
            相关资源
            最近更新 更多