在非GUI应用程序中使用Qt,优点和缺点?

时间:2014-01-28 02:38:40

标签: c++ qt

我正在使用C ++开发半实时系统。很多设计和逻辑都是基于事件的。在寻找c ++的一些事件框架时,我找到了Qt。 Qt中的信号/插槽,状态机看起来非常适合我的情况。我更喜欢他们而不是提升。此外,QObject系统具有许多不错的功能,例如QObject Model,moc,父子对象内存管理等。但我对Qt知之甚少,我在这里有几个问题。

  1. 现在我非常熟悉c ++ / stl,是否值得花时间学习Qt?无论如何,我不会使用它最受欢迎的部分,UI。

  2. 与stl / boost相比,Qt的性能如何?由于应用程序是实时的,因此性能是关键要求。例如,我必须非常仔细地设计数据布局以最大化CPU缓存利用率。 Qt提供的所有功能都会带来一些开销。会有多大的影响?

  3. Qt开发中的多线程怎么样?我可以在Qt对象中使用stl线程或pthread,还是必须使用Qt提供的线程?它易于使用吗?

1 个答案:

答案 0 :(得分:6)

  1. Qt非常值得学习。它肯定会提高你的开发速度。与boost框架相比,Qt拥有非常完整和可读的文档和示例代码,可以帮助您快速学习。

  2. 我假设您正在比较集合实现的性能。您可以参考:http://blog.codeimproved.net/2009/12/qtl-or-stl/。由于Qt更关注开发体验,因此与stl / boost相比,它的一些功能可能会有一些性能下降。但是如果有任何重大的性能损失,你总是可以毫无痛苦地切换回stl。

  3. QThreads基于pthreads构建,同时提供OO抽象。如果你正在使用Qt Objects,我建议你使用QThread。它绝对易于使用,因为开发轻松是Qt的设计理论。

  4. Qt的另一个好处是它保证在每个支持Qt的平台上,底层实现是相同的,而某些平台只提供不完整或不同的STL支持,甚至根本不提供STL支持。 Qt总是更容易预测,因为它由一个组织管理。