## 1.7 Qt 的最新进展
### 1.7.1 增加协议
诺基亚宣布,从 Qt 4.5 版本起,其用于桌面和嵌入式平台的 Qt 跨平台用户界面(UI) 及应用程序框架将在开源 LGPL 2.1 版授权下提供。此前,Qt 一直是在通用公共授权(GPL)下提供给开源社区的。另外,现已可以通过新的网站名称 www.qtsoftware.com 来了解 Qt 。
向 LGPL 的转移将为开源和商业开发人员提供比 GPL 更多的授权许可证,从而为开发 人员提高了灵活性。此外,Qt 源代码库將更加开放,鼓励更多來自桌面和嵌入式系统的开发人员社区的贡献。随着这些变化,开发人员将能够积极推动 Qt 框架的演进。
Qt 4.5 同时也可在商业授权条款下使用,Qt 之前版本的授权则保持不变,也就是说, 比如你要使用 Qt4.4.3 开源版的话,就需要遵守 GPL 而不是 LGPL 协议。而且,Qt 的 服务将扩展,以确保所有 Qt 开发专案,无论选择何种授权,都能获得同等支持。这一举措的效果如何呢,请看下面的来自业界的回应:
“Qt 在 LGPL 条款下的使用,让运用基于 Qt 应用程序顶端的 KDE 组件创建应用程 序的授权合理化。“ KDE e.V. 董事会成员 Sebastian Kügler 说,“这一更多权限的授 权为 Qt 和 KDE 技术的推广再次降低了门槛。KDE 团队欢迎开放开发进程,并期待以此进 一步促进 KDE 和 Qt Software 部门的协作。"
“结合诺基亚独立于操作系统的应用程序框架 Qt 和飞思卡尔的可实施软件,为 OEM和应用程序开发人员在挑选飞思卡尔芯片时提供了特有的自由度,从而允许开发人员为其应用程序开发和维护单一的代码库。 “飞思卡尔解决方案及可实施技术副总 裁 Raja Tabet 说, “LGPL 模式是一个出色的和时效性的授权选择,这将加速结合了飞思卡尔和 Qt 的平台的推广与开发。”
“Qt 被广泛应用于 Kubuntu 和 KDE 应用程序中,Canonical 很高兴看到其在授权模 式上的这一突破,” Ubuntu 项目创始人 Mark Shuttleworth 说,“Qt 新的授权条款将帮 助我们为用户提供空前‘诱人’的应用程序。诺基亚对跨平台 Qt 库和 Linux 平台的一贯 投入,是免费软件桌面和移动设备堆栈创新的主要动力。 ”
“我们欢迎诺基亚简化 Qt 授权的举措”,Linden 实验室平台与技术开发部副总裁 Joe Miller 说,“我们发现 Qt 是耐人寻味且极具创新的技术,无论授权方式如何,这个新的授权方式已经使得我们在追求将 QtWebkit 集成到 Second Life 时所作的决策变得更为简单。”
从中我们可以看出,诺基亚的这一举措是有力的,得到了来自世界各地用户的普遍欢 迎。尤为重要的是,它的推出为 Qt 进一步的大规模商业应用扫清了障碍。
如果想要了解更多的发布信息,可以访问: http://www.qtsoftware.com/about-us- cn/licensing 。
### 1.7.2 开放源代码库
诺基亚宣布,从 2009 年 5 月起,Qt 源代码库面向公众开放,Qt 开发人员可通过为 Qt 以及与 Qt 相关的项目贡献代码、翻译、示例以及其他内容,协助引导和塑造 Qt 未来的发 展。为了便于这些内容的管理,Qt Software 启用了基于 Git 和 Gitorious 开源项目的 Web 源代码管理系统,网址为:http://qt.gitorious.org 。
在推出开放式 Qt 代码库的同时,Qt Software 在 qtsoftware.com 发布了其产品规划(Roadmap)。其中概述了研发项目中的最新功能,展现了现阶段对 Qt 未来发展方向的观 点,以期鼓励社区提供反馈和贡献代码,共创 Qt 的未来。
该消息以及关于贡献模式和产品规划的详细内容现在发布在官方中文网站。 想了解 更多, 请参考以下链接:
全部的消息内容:http://www.qtsoftware.com/about-us-cn/news/qt-contribution- model-announced
贡献模式:http://www.qtsoftware.com/resources-cn/the-qt-contribution-model 产品规划:http://www.qtsoftware.com/resources-cn/qt-roadmap
### 1.7.3 确定 Qt 的发展方向
诺基亚 QtSoftware 首席技术官 Benoit Schillings 称 Qt4.5 为应用程序开发树立了标 杆。他还表示:“通过 Qt 性能方面的改进、QtCreator 的诞生和 Qt 软件开发工具包的发 布,那些寻找能够将本地内容和 Web 开发完整集成的应用框架的开发人员将如虎添翼,凭 增开发活力与灵活表现。”
从 Nokia 发布的 Qt Software RodeMap 路线图上,我们可以看到,在最新的 Qt4.5 以
及后续版本中,Qt 将在以下方向持续改进:
1\.不断增强 Qt 的跨平台能力 主要体现在:
+ 支持 Mac OS X Cocoa 框架
+ 增加了对 Windows CE 上 Phonon 和 WebKit 模块的支持
+ 推出 Qt for S60 (Tech Preview)
+ 增加 Windows 7 支持
+ 推出 32 位/64 位版本,更新 Qt 以便适用于 64 位 Mac。 2\. 持续提升 Qt 的性能
主要体现在:
+ 提高了图形绘图性能
+ 改进 Web 和混合式开发,支持动态的集成 web 和本地内容 3.不断完善 Qt 工具包
主要体现在:
+ 推出 Qt Creator 并不断增强其功能
+ 继续提供并改进 Eclipse 和 Visual Studio 插件
+ 研究并准备推出社区和协作工具
+ 支持混合式应用程序开发
+ 构建高效 Build 系统 4\. 支持先进的界面开发
主要体现在:
+ 推出 Qt Kinetic 项目
+ 增加手势触摸功能支持
+ 提供 OpenVG 支持功能
+ 增加 3D 支持工具
5\. 展开 Qt 框架发展方向研究 主要体现在:
+ 多媒体服务
+ 混合式应用程序开发
+ 内存和资源管理
+ XML Schema (模式) 支持
+ Qt 3D 可移植
+ 下一代对象视图
看了上面的介绍,广大的 Qt 用户和潜在的使用者一定会极大的增强信心,毫无疑问的 是,被 NOKIA 收购后,Qt 将获得更好更快的发展,并且会一如既往的坚持开源与商业的双 重授权策略。
### 1.7.4 Qt 4.5—Qt 发展的重要里程碑
Qt4.5 的发布,可以看作是 Qt 发展史上的又一个重要的里程碑。借此, Qt 第一次提出 了“Qt EveryWhere”的口号,真正的全速前进走向了大规模的商业应用,开源社区也得到 了更加强有力的支持,尤为突出的是 Qt 的性能得到了很大的提升。用一句话来总结,就是 Qt 从未充满如此奔放的活力和富有如此强大的号召力。
由于 Qt 4.5 版是自 Trolltech 被 NOKIA 收购后,Qt 发布的首个全新版本,因此显得格 外引人注目,在国内外掀起了学习的热潮。 Qt 4.5 变化较大,在很多方面与以前的 Qt4 系 列有所不同,为了使初学者不致于走弯路,下面就对 Qt4.5 的变化给大家做一个详细的介 绍。
1\. 修改授权方式,增加 LGPL 协议 支持-Qt 更开放
Qt4.5 增加了对 LGPL 协议的支持,并继续 支持多种授权协议如 GPL、GNU 等,这为 Qt 和 KDE 的商业应用进一步扫清了障碍。
2\.增加 SDK 包,可以直接安装-Qt 更易用
首次增加了 Qt SDK 包,提供了直接安装的版本,在一个单独安装程序内包含了使用
Qt 进行跨平台开发所需的全部工具,其中包含了 Qt 库、Qt Creator IDE、Qt 开发工具, 并且仍然像以前那样提供二进制的 tar 包。
3\. 大幅度提升性能-Qt 更便捷
性能提升是 Qt 4.5 的主要设计目标之一。通过以重构关键功能、采用全新的插件式 图形系统、推出全新的性能基准库- QtBenchLib 等举措,基于 Qt 的应用程序的运行时间 性能得到了大幅提高。
更为详细的性能提升比较,请参见 Qt Labs 上的度量标准。
4\. 在 X11 上的测试平台是 Kubuntu
目前在 x11 上,Qt4.5 已在 Kubuntu8.04、8.10 上验证测试过了,但 Qt Software 并未提及其它的发行版。所以如果你想在 Linux 上使用 Qt4.5 的话,Kubuntu 将是一个不错 的选择。
5\. 区分为 32/64 位版
在 4.5 版以前,Qt 是不区分 32 位和 64 位版的,这次明确区分了,所以大家在使用时 需要注意,你的软硬件平台是否对应支持,不要 “张冠李戴”了。
6\.正式支持 WinCE 这个不用多说了,以前发布的版本都是测试版。
7\.支持 Symbian 上的 S60 平台
截至 09 年 5 月,Qt 发布了 Qt for S60 预先发布版 "Garden" ,正式的版本将在 09 年中发布。
8\.不完全支持 MIPS
大家如果拿到了 Qt4.5 的 SDK,可以注意一下,其名字中均带有 x86 字样,经过官方 证实,目前 Qt4.5 在 MIPS(比如国产 CPU 龙芯)上还不能直接使用,要使用的话,需要采 用编译的方式安装,并且要修改某些文件的内容,步骤比较繁杂,难度较大。不过已经有网 友在龙芯上编译 Qt Creator 成功,详情可以参见 Qt 知识库网站。(见附录网址)
9\.在 Mac 上支持 64 位 Cocoa
Qt 4.5 在全新的 Mac Cocoa API 基础上对 64 位应用程序开发提供支持,这样 Qt 开 发人员就可将需要大量资源的应用程序部署到最新版本的 Mac OS (10.5) 上。
10\.升级至 WebKit 最新版本
在 Qt 4.5 中,Qt WebKit Integration 现已使用 WebKit 最新版本,其中包括:
+ 支持 Netscape 插件 (NPAPI),可在您的 Qt 应用程序中加入 Flash™ 内容
+ 支持 HTML 5,包括缩放、基于 CSS 的动画以及更多功能
+ 集成精简的 SquirrelFish JavaScript 引擎 11\. 附加许多新功能
Qt 4.5 引入了许多其他跨框架的新功能,其中包括:
+ 用于 QtScript ECMA 标准 Qt 脚本引擎的全新调试器 (观看视频!)
+ 支持 XSLT,可将 XML 内容转换为 XML、HTML 或其他文本
+ 支持开放文档格式 (.odf)
+ 改进了代理支持
12\. Qt Jambi 将交由社区开发
Qt 与 Java 编程语言绑定的最终新功能版 Qt Jambi 4.5.0_01 已经发布,根据 NOKIA 发表的声明,Qt Jambi 的开发将在一年的维护期结束后停止,以便集中资源进行 Qt 跨平 台应用和 UI 框架的开发。为了确保 Qt Jambi 实施的连续性,该项目会在
http://qt.gitorious.org 上保留,社区开发者仍可继续对其进行开发。
通过这次发布,Nokia 确定了 Qt Software 的发展方向-就是在保持 Qt 跨平台发展这 个主线的同时,能够适应更多“有前景”的软硬件平台,比如 Nokia 的 Symbian 操作系统 上的 S60 等,并提供对开发全生命周期提供完整的支持。
总之一句话,Qt 采用了诸多新的举措,努力使得 Qt 比以往更开放、更易用以及更便捷。
有关 Qt 4.5 包含的新功能的详细信息,请查阅 Qt 技术文档。
在不同的平台上,Qt 提供的功能是不尽相同的,表 1-6 所示为 Qt4.5 在所支持的平台 上的功能分布,表 1-7 所示为 Qt4.5 的类库的核心功能,大家可作为参考。
表 1-6 Qt4.5 在各个平台上的功能分布
| 功能模块 | Linux/X11 | Embedded Linux | Windows | Windows CE | Mac OS X |
| --- | --- | --- | --- | --- | --- |
| 拖放可视化 GUI 构 建器 | √ | √ | √ | √ | √ |
| 国际化和 翻译工具 | √ | √ | √ | √ | √ |
| 可定制的 HTML 帮 助文件阅读器 | √ | √ | √ | √ | √ |
| 集成 Eclipse 和 KDevelop IDE | √ | x | x | x | x |
| 集成 Visual Studio | x | x | √ | √ | x |
| 一整套可定制的 UI 控件或 widget | √ | √ | √ | √ | √ |
| 本地 Aqua 外观, 以及 Aqua 风格的 widget | x | x | x | x | √ |
| 集成了 OpenGL, 支持 3D 图形 | √ | √ | √ | √(OpenGL ES) | √ |
| 集成了 Direct3D® 的 3D 图形支持 | x | x | √ | x | x |
| 强大的 多线程功能 | √ | x | √ | x | √ |
| 可处理上百万个对 象的 2D 图形画布 | √ | x | √ | x | √ |
| 集成了 Phonon 多 媒体框架 | √ | √ | √ | x | √ |
| WebKit 集成 | √ | √ | √ | x | √ |
| 网络、XML 和数据 库功能 | √ | √ | √ | √ | √ |
| ECMA 标准脚本引擎 | √ | √ | √ | √ | √ |
| 紧凑高效的视窗系 统 (QWS) | x | √ | x | x | x |
| 虚拟帧缓冲 (QVFb) | x | √ | x | x | x |
表 1-7 Qt4.5 类库的核心功能
| 功能模块 | 详细内容 |
| --- | --- |
| 先进的图形用户界面( GUI) | Qt 使用所支持平台的本地化图形 API,充分利用系统资源并给予应用程序 本地化的界面。 |
| 基于 OpenGL® 与 OpenGL® ES 的 3D 图形 | 虽然 OpenGL 完美支持 3D 图形,但却不支持创建应用程序用户界面。Qt 通过与 OpenGL 的紧密集成解决了这一难题。并且支持 Windows 平台上的 Direct3D® |
| 多线程 | Qt 的跨平台多线程功能简化了并行编程,另外它附加的同步功能可以更 加轻松地利用多核架构。 |
| 嵌入式设备的紧凑视窗系统 | 可以把基于 Qt 的应用程序直接写入 Linux 帧缓冲,解除了开发者对 X11 视窗系统的需求。 |
| 对象间通讯 | 提供信号与槽机制,使应用程序能够在不同的组件间通信 |
| 2D 图形 | Qt 给您提供一个功能强大的 2D 图形画布,用以管理和集成大量的图形元 素。 |
| 多媒体框架 | Qt 使用 Phonon 多媒体框架为众多的多媒体格式提供跨桌面与嵌入式操作 系统的回放功能。Phonon 可以轻松将音频与视频回放功能加入到 Qt 应用 程序当中,并且在每个目标平台上提取多媒体格式与框架。 |
| WebKit 集成 | Qt WebKit 集成,即 Qt 集成了 WebKit 功能,WebKit 是 KDE 项目下基于 KHTML 的开放源 web 浏览器引擎。目前 Apple®,Google™ 与 Nokia 等公 司使用 Qt WebKit 集成。 |
| 网络连接 | Qt 让您网络编程更简单,并支持跨平台网络编程 |
| XML | Qt 为 XML 文件以及 SAX 和 DOM 协议的 C++实现,提供了一个流媒体文件读写器。同时 Qt 还包含了 XQuery – 一个简单的类似 SQL 的查询语 言,用于解析 XML 文件来选择和聚合所需要的 XML 元素,并且将它们转换 成 XML 输出或其它格式的输出。 |
| 脚本引擎 | Qt 包含一个完全集成 ECMA 标准的脚本引擎。 QtScript 提供 QObject 集成,把 Qt 的信号与槽机制整合成脚本,并且实现了 C++ 与脚本的集 成。 |
| 数据库 | Qt 帮助您将数据库与您的 Qt 应用程序无缝集成,支持所有主要的数据库 驱动,并可以多种视图或数据识别表单方式显示数据 |
- 第 1 章 走近 Qt
- 1.1 Qt 简介
- 1.2 Qt 纪事概览
- 1.3 Qt 套件的组成(以 Qt4.5 为准)
- 1.4 Qt 的授权
- 1.5 Qt 的产品
- 1.6 Qt 的服务与支持
- 1.7 Qt 的最新进展
- 1.8为什么选择 Qt
- 1.9 问题与解答
- 1.10 总结与提高
- 第 2 章 Qt 的安装与配置
- 2.1 获取 Qt
- 2.2 协议说明
- 2.3 安装 Qt
- 2.4 配置 Qt4 环境
- 2.5 问题与解答
- 2.6 总结与提高
- 第 3 章 Qt 编程基础
- 3.1 标准 C++精讲
- 3.2 Windows 编程基础
- 3.3 Linux 编程基础
- 3.4 Mac 编程基础
- 3.5 问题与解答
- 3.6 总结与提高
- 第 4 章 Qt 4 集成开发环境
- 4.1 常见的 Qt IDE
- 4.2 Qt Creator
- 4.3 Eclipse
- 4.5 问题与解答
- 4.6 总结与提高
- 第 5 章 使用 Qt 基本 GUI 工具
- 5.1 使用 Qt Designer 进行 GUI 设计
- 5.2 使用 Qt Assistant 获取在线文档与帮助
- 5.3 使用 Qt Demo 学习 Qt 应用程序开发
- 5.4 问题与解答
- 5.5 总结与提高
- 第 6 章 Qt 4 程序开发方法和流程
- 6.1 开发方法
- 6.2 Hello Qt
- 6.3 几个重要的知识点
- 6.4 问题与解答
- 6.5 总结与提高
- 第 7 章 对话框
- 7.1 QDialog 类
- 7.2 子类化 QDialog
- 7.3 快速设计对话框
- 7.4 常见内建(built in)对话框的使用
- 7.5 模态对话框与非模态对话框
- 7.6 问题与解答
- 7.7 总结与提高
- 第 8 章 主窗口
- 8.1 主窗口框架
- 8.2 创建主窗口的方法和流程
- 8.3 代码创建主窗口
- 8.4 使用 Qt Designer 创建主窗口
- 8.5 中心窗口部件专题
- 8.6 Qt4 资源系统专题
- 8.7 锚接窗口
- 8.8 多文档
- 8.9 问题与解答
- 8.10 总结与提高
- 第 9 章 Qt 样式表与应用程序观感
- 9.1 应用程序的观感
- 9.2 QStyle 类的使用
- 9.3 样式表概述
- 9.4 使用样式表
- 9.5 问题与解答
- 9.6 总结与提高
- 第 10 章 在程序中使用.ui 文件
- 10.1 uic 的使用
- 10.2 Ui_YourFormName.h 文件的组成
- 10.3 编译时加入处理.ui 文件的方法
- 10.4 运行时加入处理.ui 文件的方法
- 10.5 信号与槽的自动连接
- 10.6 问题与解答
- 10.7 总结与提高 本章主要讲解了以下内容:
- 第 11 章 布局管理
- 11.1 基本概念和方法
- 11.2在 Qt Designer 中使用布局
- 11.3 基本布局实践
- 11.4 堆栈布局
- 11.5 分裂器布局
- 11.6 自定义布局管理器
- 11.7 布局管理经验总结
- 11.8 问题与解答
- 11.9 总结与提高
- 第 12 章 使用 Qt Creator
- 12.1 Qt Creator 概览
- 12.2 Qt Creator 的组成
- 12.3 快捷键和常用技巧
- 12.4 Qt Creator 构建系统的设置
- 12.5 处理项目间依赖关系( Dependencies )
- 12.6 Qt 多版本共存时的管理
- 12.7 使用定位器在代码间快速导航
- 12.8 如何创建一个项目
- 12.9 实例讲解
- 12.10 使用 Qt Creator 调试程序
- 12.11 问题与解答
- 12.12 总结与提高
- 第 13 章 Qt 核心机制与原理
- 13.1 Qt 对标准 C++的扩展
- 13.2 信号与槽
- 13.3 元对象系统
- 13.4 Qt 的架构
- 13.5 Qt 的事件模型
- 13.6 构建 Qt 应用程序
- 13.7 总结与提高
- 附录 A qmake 使用指南
- A.1 qmake 简介
- A.2 使用 qmake
- 附录 B make 命令
- B.1 命令解释
- B.2 使用 make 自动构建
- 附录 C Qt 资源
- C.1Qt 官方资源
- C.2 Qt 开发社区