我最近开始研究Qt(我安装了Qt 4.5.2并安装了他们的Eclipse-CDT插件,称为“qt integration v1.5.2”,我将在Linux-Eclipse-CDT-QTintegration中进行所有开发)。
最初我认为Qt是一个直接的vanilla C ++库但是当我安装并开始运行Qt示例代码时,我看到很多“怪异”的东西,我认为是非标准的。
我的目标是在高层次的抽象中理解:
答案 0 :(得分:30)
Qt是一个框架,而不是一个库。这不是编程语言强制执行的硬性区分,而是描述了代码的设计和使用方式:
库是您的代码使用的其他人的代码。使用库意味着您的应用程序保持原样,它只有另一个库来帮助它。
框架是您的代码适合的其他人的代码。使用框架意味着框架定义了应用程序的结构。
如果您正在使用框架,则需要了解该框架的约定,这些约定可能与基本语言略有不同;否则,你可以花很多时间来对抗这个框架,你会错过它所能提供的一些东西。
Qt特别看起来不像直接的香草C ++,因为它不是直接的香草C ++。它为C ++的对象系统添加(有限的)扩展,以允许信号和插槽等功能;这些扩展是使用Qt的moc实现的,它充当C ++预处理器。有关Qt的C ++扩展的更多信息:
答案 1 :(得分:3)
Qt是一组C ++库以及预处理器和构建系统的一部分。
答案 2 :(得分:2)
大多数gui框架/库都添加到该语言中,因为C ++本身并不支持gui所需的事件(或直到最近才这样做。)
Qt选择使用语言扩展和预编译器来执行此操作,MFC和wxWidgets使用c宏和c预处理器执行此操作。 Qt方法意味着它可以做更多的事情(它不受cpp宏语言的限制),而代价是稍微复杂的构建环境。