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