【发布时间】:2010-09-26 11:40:24
【问题描述】:
我正在考虑使用 Qt 4 框架在 C++ 中启动一个项目(需要跨平台 GUI)。我从朋友和网上听到了关于 Boost 库的好消息。我已经开始阅读两者,并想在深入之前问一个粗略的问题:这两个开发“系统”是否相互排斥?
我最初的搜索和阅读显示在信号处理、自定义构建系统和其他低级原语方面存在一些重叠。
在同一个项目中同时使用它们有意义吗?
【问题讨论】:
我正在考虑使用 Qt 4 框架在 C++ 中启动一个项目(需要跨平台 GUI)。我从朋友和网上听到了关于 Boost 库的好消息。我已经开始阅读两者,并想在深入之前问一个粗略的问题:这两个开发“系统”是否相互排斥?
我最初的搜索和阅读显示在信号处理、自定义构建系统和其他低级原语方面存在一些重叠。
在同一个项目中同时使用它们有意义吗?
【问题讨论】:
是的,这很有意义。我通常更喜欢在可能的情况下使用 boost/stdlib 函数,而不是它们的 Qt 替代品。
它使代码更容易移植到下一个框架。
它使新的非 Qt 程序员更容易上手。
Boost 有一些很棒的功能,而且一直在变得越来越多。
注意:到/来自小部件的字符串可能是主要的例外 - 在 GUI 内,我会使用 Qt 字符串来保存所有令人困惑的转换。
【讨论】:
This paper 将 QT 中的 signal slots 机制与 Boost::Signal 进行比较得体。对于那些对这种组合有点好奇的人来说,这是必读的。
【讨论】:
特别是因为您要跨平台,您应该有一个很好的分层架构,业务逻辑和数据访问尽可能从 GUI 中移除。在这种情况下,在编写应用程序的后端时使用 Boost 是有意义的,而前端只跳转到 Qt,并在胶水中完成强制转换。
如果您的“引擎”与您的 GUI 选择是分开的,那么您将来可以轻松地将 Qt 换成其他东西(也许是原生库)。
【讨论】:
我们(Last.fm)同时使用它们,虽然我们才刚刚开始这样做,所以还没有很多经验。到目前为止一切都很好:)
【讨论】:
将 Boost.Signals 与 QT 一起使用存在潜在问题。这些记录在Boost.Signals FAQ 中。
【讨论】:
考虑Boost Signals2 可用,并且它们是线程安全的。
【讨论】: