13.4 Qt 的架构
Qt 的功能是建立在它所支持平台的底层 API 之上的,这使 得 Qt 非常灵活和高效。 Qt 使应用程序可与单平台的应用程序配套。
Qt 是一个跨平台的框架,它使用本地样式的 API 严格遵循每个支持平台中的用户界 面原则。Qt 绘制了 GUI 应用程序所需的几乎所有控件,并且开发人员可以通过重新实现虚 函数的方式来扩展或自定义所有这些控件。 Qt 的窗体能够精确模拟支持平台的观感,开发 人员还可以生成自己的自定义样式,为其应用程序提供具有鲜明特色的外观。
Qt 在它所支持的不同平台中使用底层 API。这与传统的“分层”跨平台工具套件不 同,传统工具套件是指在单个平台工具套件中使用的简单封装(例如,在 Windows 中使用 MFC;在 X11 中使用 Motif)。通常,分层工具套件速度较慢,其原因在于:库函数的每次 调用都会产生许多要经过不同 API 层的附加调用。分层工具套件往往会受到基本工具套件 的功能和行为的限制,导致应用程序中出现隐性错误。
Qt 做到了非常专业地支持各种平台 ,并且可以充分利用各种平台的优点。通过使用单 个源代码树,Qt 应用程序可以编译成每个目标平台的可执行程序。尽管 Qt 是一个跨平台 的框架,但与许多平台特定的工具套件相比, Qt 完全面向对象,更易于学习,更具有高效 性,这使得许多开发人员在开发单个平台时也更倾向于使用 Qt。
1.X11
Qt/X11 使用 Xlib 直接与 X 服务器通信。Qt 不使用 Xt(X Toolkit,即:X 工具套件)、Motif、Athena 或其他任何工具套件。
Qt 支持各种 Unix :AIX®、FreeBSD®、HP-UX、Irix®、Linux、NetBSD、OpenBSD 和 Solaris。有关 Qt 所支持的编译器和操作系统版本的最新列表信息,请访问 NOKIA 公司网 站。
Qt 应用程序自动适应用户的窗口管理器或桌面环境,并且在 Motif、CDE、GNOME 和 KDE 下具有桌面环境本身的观感。这与大多数 Unix 工具套件相反,这些套件总是把用户限 制在套件自身观感下。Qt 全面支持 Unicode。Qt 应用程序自动支持 Unicode 和非 Unicode 字体。Qt 将多种 X 字体组合在一起,可显示多语言文本。
Qt 的字体处理功能十分强大,可以在所有已安装的字体中搜索当前字体中不存在的字符。
Qt 可以充分利用 X 扩展程序。对于反锯齿字体、alpha 混合字体和矢量图形,Qt 支持 RENDER 扩展程序。Qt 还为 X 输入方法提供了现场编辑功能。Qt 可以 使用传统的多头 显示适配器和 Xinerama 支持多个屏幕。
图 13-1 支持桌面平台中的 Qt 架构概览图
2.Microsoft Windows
Qt/Windows 使用 Win32® API 和 GDI 用于事件和绘图原语。Qt 不使用 MFC 或任何 其他工具套件。特别地,Qt 不使用缺乏灵活性的“常见”控件上,而是采用功能更强大的 可自定义的控件(如果不是特殊应用, Qt 使用 Windows 本身的文件和打印对话框) 。
使用 Windows 的客户可以在 Windows 98、NT4、ME、2000、XP 和 Vista 中使用 Microsoft Visual C++® 和 Borland C++来创建 Qt 应用程序。
Qt 为 Windows 版本执行运行检查, 并使用提供的最高级功能。 例如, 只有 WindowsNT4、2000、XP 和 Vista 支持旋转文本;Qt 则在所有 Windows 版本中都支持旋转 文本,并在可能的情况下使用了操作系统本身的支持。 Qt 开发人员还可以避免处理不同版 本 Windows API 中的差异。
Qt 支持 Microsoft 的可访问界面。与 Windows 中的常见控件不同,您可以扩展 Qt 控件, 而不会丢失 Qt 基本控件的可访问或者说是固有信息。另外,我们也可以制作和使 用自定义控件。Qt 支持 Microsoft Windows 下多个屏幕显示。
3.Mac OS X
Qt 将 Cocoa® 和 Carbon® API 组合在一起用来支持 Mac OS X。
Qt/Mac 引入了布局并直接支持国际化,允许采用标准化方式访问 OpenGL,并使用 Qt Designer 提供了功能强大的可视化设计。Qt 使用事件循环处理文件和异步套接字的输入输 出。Qt 提供了稳定的数据库支持。开发人员可以使用流行的面向对象的 API 来创建 Macintosh 应用程序,该 API 具有综合文档和全部的源代码。
Macintosh 开发人员可以在自己喜欢的平台上创建应用程序,在其他受支持的平台 中,只需进行简单的重编译,即可显著扩大应用程序市场。 Qt 支持 Mac OS X 中通用的二 进制,这意味着可以为基于 Intel CPU 和 PowerPC CPU 的 Mac 创建 Qt 应用程序。