66

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

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

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

4

6 回答 6

54

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

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

注意:到/来自小部件的字符串可能是主要的例外 - 在 GUI 内,我会使用 Qt 字符串来保存到处乱七八糟的转换。

于 2008-12-11T17:30:43.153 回答
31

这篇论文非常体面地比较了 QT 和Boost::Signal中的信号槽机制。对于那些对这种组合有点好奇的人来说,这是必读的。

于 2009-03-29T21:14:16.033 回答
18

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

如果您的“引擎”与您的 GUI 选择是分开的,那么将来您将能够以最小的努力将 Qt 换成其他东西(也许是本机库)。

于 2009-03-03T11:36:41.053 回答
7

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

于 2008-12-12T12:41:56.737 回答
3

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

于 2009-03-04T16:25:52.333 回答
3

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

于 2011-01-18T13:57:19.627 回答