## 1.4 Qt 的授权
Qt 产品的提供是采用双重授权的软件许可模式。在该双重授权模式下, Qt 产品不仅可 在获得商业许可下针对专利软件开发,而且还可以在 GPL(通用公共许可证,版本 2 或版本 3)下用于开发免费和开源软件。 也就是说,Qt 这个软件本身是开源和免费使用的, 如果 你基于 GPL 协议来开发软件的话,你开发的东西都要以 GPL 协议发布- 开源并免费提供源 码。
自从 Qt4.5 版本发布以后,Qt 通过三种授权方式提供: 商业、 LGPL 和 GPL,并且 仍然符合 Qt 的双重授权战略,表 1-3 示出了 Qt 的授权方式的简要说明,表 1-4 对比了授 权方式在具体使用时的不同。
表 1-3 Qt 的授权方式
| Qt 商业版 | Qt 商业授权适用于开发专属和/或商业软件。此版本适用于不希望与他人共享源代码,或者遵循 GNU 宽通用公共许可证 (LGPL) 2.1 版或 GNU GPL 3.0 版条款的开发人员。 |
| --- | --- | --- | --- |
| Qt GNU LGPL v. 2.1 | 此版本 Qt 适用于开发专属或开源 Qt 应用程序,前提条件是必须遵循 GNU LGPL 2.1 版的条款。 |
| Qt GNU GPL v. 3.0 | 如果您希望将 Qt 应用程序与受 GNU 通用公共许可证 (GPL) 3.0 版本条款限制的软件一同使用,或 者您希望 Qt 应用程序遵循该 GNU 许可证版本的条款,则此版本 Qt 适用于开发此类 Qt 应用程 序。 |
表 1-4 Qt 授权对照表
| | 商业版 | LGPL 授权版 | GPL 授权版 |
| --- | --- | --- | --- |
| 授权收费 | 收取授权费 | 免费 | 免费 |
| 必须提供更改 Qt 的源代码 | 不需要, 更改的代码可以不公 布 | 必须提供源代码 | 必须提供源代码 |
| 可以创建专属应用程序 | 可以,不必公布源代码 | 可以,但必须遵循 LGPL v.2.1 条款 | 不可以,应用程序受 GPL 限 制,且源代码必须公开。 |
| 提供更新 | 是,仅限申请有效维护服务的 用户。 | 是,免费发布。 | 是,免费发布。 |
| 支持 | 提供,条件是维护协议必须有 效。 | 不提供,必须单独购买。 | 不提供,必须单独购买。 |
| 运行时收费 | 是 | 否 | 否 |
按照授权协议的不同,Qt 被按不同的版本发行:
Qt 商业版用于商业软件的开发,提供免费升级和技术支持服务。
Qt 开源版是 Qt 的非商业版本,是为开发自由和开放源码软件提供的 Unix/X11 版本。 在 GNU、GPL 或 LGPL 许可证下,它可以免费下载和使用。
此外,Qt 还提供了免费评估版、快照、beta 测试版、预览版等多种版本,其中免费评 估版 Qt 适用于 Windows、Mac、Linux、嵌入式 Linux 和 Windows CE 平台,它不但具备 全部功能,还带有源代码,Nokia 会在您进行评估期间提供技术支持。而快照、 beta 测试 版、预览版等版本则得不到 Qt 的支持。
### 1.4.1 Qt 开源版和商业版的不同
在网上经常看到有朋友提问,Qt 开源版和商业版到底有那些不同,有没有必要使用商 业版等问题,看来还是很有必要向大家介绍一下:
1\. 功能不尽相同
两者在源码上基本一致,但开源版缺少一些数据库插件,因为这些插件都是基于特定数据库客户端程序的,很多商业数据库的客户端程序并不是开源的,所以插件就无法开源;也就是说,开源版不支持商业数据库的驱动,一般需要大家自己写驱动或者是采用第三方的 驱动。另外,在 Windows 版本上,开源版没有 ActiveQt 这个模块,它可以用来开发ActiveX 程序。
2\.收费不同
开源版不收费,商业版根据版本不同,费用不同,一般一个 developer license 需要 大约几千美金。
3\.服务不同
开源版不能享受服务,但可以到一些开放的 maillist 和论坛讨论;商业版有一年的免 费技术支持,有问题就直接发给 support@qtsoftware.com,另外商业版中还包括一年的同 产品免费下载支持。
4\.协议不同
这个应该是最本质的不同,使用开源版开发需要遵循 GPL 或者 QPL,而使用商业版就没 有这个限制,大家可以看看 license agreement,原则上只要不开发和 Qt 竞争的产品就可以了。
总而言之,商业版 Qt 授权包括电子邮件(email)支持,可以获得升級,让您能够开发 完全闭源的软件。LGPL 对用户重新连接代码库的许可权有一些限制,不能提供商业数据库 如 Oracle 等的驱动,以及对 Micorsoft Office 二次开发的支持等,有时还有强加某些机 构可能不喜欢的架构要求等其他限制。除此之外,大多数情况下开源版的功能与商业版并无 二致。商业版与开源版功能的详细比较如表 1-5 所示:
表 1-5 开源版与商业版的比较
| 功能模块 | 开源版 | 商业版 |
| --- | --- | --- | --- |
| Qt 的基本模块(工具、核心、窗口部件、对话框) 与平台无关的 Qt 图形用户界面工具包和应用类 | √ | √ |
| [Qt 设计器](http://www.qiliang.net/qt/designer-manual.html) 可视化的 Qt 图形用户界面的生成器 | √ | √ |
| [图标视图模块](http://www.qiliang.net/qt/iconview.html) 几套图形用户交互操作的可视化效果 | √ | √ |
| [工作区模块](http://www.qiliang.net/qt/workspace.html) 多文档界面(MDI)支持 | √ | √ |
| [OpenGL 三维图形模块](http://www.qiliang.net/qt/opengl.html) 在 Qt 中集成了 OpenGL | √ | √ |
| [网络模块](http://www.qiliang.net/qt/network.html) 一些套接字,TCP、FTP 和异步 DNS 查询并且与平台无关的类 | √ | √ |
| [画布模块](http://www.qiliang.net/qt/canvas.html) 为可视化效果,图表和其它而优化的二维图形领域 | √ | √ |
| [表格模块](http://www.qiliang.net/qt/table.html) 灵活的可编辑的表格/电子表格 | √ | √ |
| [XML 模块](http://www.qiliang.net/qt/xml.html) 通过 SAX 接口和 DOM 的很好的且已经成形的 XML 解析器 | √ | √ |
| [SQL 模块](http://www.qiliang.net/qt/sql.html) SQL 数据库访问类 | 部分驱动(Sqlite、 MySQL) | √ |
| ActiveQt 模块 | 支持 Office 二次开发等的模块 | x | √ |
| 售后服务和支持 | x 可单独购买服务 | √ |
如果要下载上述版本的 Qt,只需访问网址: http://www.qtsoftware.com/downloads,而商业版本还需要与 Nokia 接洽。
- 第 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 开发社区