【问题标题】:Mixing Qt and Boost混合 Qt 和 Boost
【发布时间】:2010-09-26 11:40:24
【问题描述】:

我正在考虑使用 Qt 4 框架在 C++ 中启动一个项目(需要跨平台 GUI)。我从朋友和网上听到了关于 Boost 库的好消息。我已经开始阅读两者,并想在深入之前问一个粗略的问题:这两个开发“系统”是否相互排斥?

我最初的搜索和阅读显示在信号处理、自定义构建系统和其他低级原语方面存在一些重叠。

在同一个项目中同时使用它们有意义吗?

【问题讨论】:

    标签: c++ qt boost


    【解决方案1】:

    是的,这很有意义。我通常更喜欢在可能的情况下使用 boost/stdlib 函数,而不是它们的 Qt 替代品。

    它使代码更容易移植到下一个框架。
    它使新的非 Qt 程序员更容易上手。
    Boost 有一些很棒的功能,而且一直在变得越来越多。

    注意:到/来自小部件的字符串可能是主要的例外 - 在 GUI 内,我会使用 Qt 字符串来保存所有令人困惑的转换。

    【讨论】:

    • Qt 也有很棒的功能,而且一直在变得越来越多。与 Boost 相比,Qt 具有出色(更好)的文档(基于我使用两者的经验)。有人可能会说,使用 Boost 也会让非 Boost 程序员更难。
    • 对 boost 来说是正确的,但我仍然会在 Qt 的集合类上使用 std::vector 等
    • 更多的是意见而不是答案。
    【解决方案2】:

    This paper 将 QT 中的 signal slots 机制与 Boost::Signal 进行比较得体。对于那些对这种组合有点好奇的人来说,这是必读的。

    【讨论】:

    • 好论文。感谢您的链接。
    【解决方案3】:

    特别是因为您要跨平台,您应该有一个很好的分层架构,业务逻辑和数据访问尽可能从 GUI 中移除。在这种情况下,在编写应用程序的后端时使用 Boost 是有意义的,而前端只跳转到 Qt,并在胶水中完成强制转换。

    如果您的“引擎”与您的 GUI 选择是分开的,那么您将来可以轻松地将 Qt 换成其他东西(也许是原生库)。

    【讨论】:

      【解决方案4】:

      我们(Last.fm)同时使用它们,虽然我们才刚刚开始这样做,所以还没有很多经验。到目前为止一切都很好:)

      【讨论】:

        【解决方案5】:

        将 Boost.Signals 与 QT 一起使用存在潜在问题。这些记录在Boost.Signals FAQ 中。

        【讨论】:

          【解决方案6】:

          考虑Boost Signals2 可用,并且它们是线程安全的。

          【讨论】:

            猜你喜欢
            • 2018-02-28
            • 1970-01-01
            • 2011-04-08
            • 2014-10-20
            • 2012-01-04
            • 2011-09-06
            • 1970-01-01
            • 1970-01-01
            • 2012-10-28
            相关资源
            最近更新 更多